代码之家  ›  专栏  ›  技术社区  ›  toraritte

在Nix表达式中,“点-斜线-点”(./.)是什么意思?

nix
  •  0
  • toraritte  · 技术社区  · 2 年前

    无论我在哪里看到 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
    

    那么为什么不简单地使用 . ?

    1 回复  |  直到 2 年前
        1
  •  3
  •   toraritte    2 年前

    从…起 5.2.1 Values section of the Nix manual (强调我的):

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

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