【问题标题】:What does "dot slash dot" (./.) mean in a Nix expression?Nix 表达式中的“点斜线点”(./.)是什么意思?
【发布时间】:2022-07-22 10:04:18
【问题描述】:

无论我在哪里看到flake-compat,它都是

(import (fetchTarball https://github.com/edolstra/flake-compat/archive/master.tar.gz) {
  src = ./.;
}).shellNix

显然是一个指向当前目录的路径,可以通过简单的测试证明:

[~/testdir]$ ll .
total 24
drwxr-xr-x 2 toraritte users  4096 Jul 21 21:56 ./
drwx------ 7 toraritte users 20480 Jul 15 23:13 ../
-rw-r--r-- 1 toraritte users     0 Jul 21 21:56 lofa

[~/testdir]$ ll ./.
total 24
drwxr-xr-x 2 toraritte users  4096 Jul 21 21:56 ./
drwx------ 7 toraritte users 20480 Jul 15 23:13 ../
-rw-r--r-- 1 toraritte users     0 Jul 21 21:56 lofa

那么为什么不直接使用.呢?

【问题讨论】:

    标签: nix


    【解决方案1】:

    来自5.2.1 Values section of the Nix manual(强调我的):

    路径,例如 /bin/sh./builder.sh路径必须至少包含一个 斜线被识别为这样。

    例如,builder.sh 不是 路径:它被解析为一个表达式,从中选择属性sh 变量builder。如果文件名是相对的,即,如果它是 不以斜杠开头,在解析时相对于 包含它的 Nix 表达式的目录。例如, 如果/foo/bar/bla.nix 中的 Nix 表达式引用了../xyzzy/fnord.nix, 绝对路径是/foo/xyzzy/fnord.nix

    【讨论】:

      猜你喜欢
      • 2016-01-15
      • 2011-06-10
      • 2022-01-17
      • 2023-03-03
      • 2017-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多