路径"//"是什么意思?

Alu*_*Alu 1 unix bash zsh

我刚刚//在我的机器上找到了这个目录,现在我想知道这意味着什么.

user@dev:~$ cd /
user@dev:/$ pwd
/
user@dev:/$ cd //
user@dev://$ pwd
//
Run Code Online (Sandbox Code Playgroud)

它显然是根目录,但是何时以及为什么我使用双斜杠而不是单斜杠?

它与编程时使用的转义路径字符串有关吗?例如:

string path = "//home//user//foo.file"
Run Code Online (Sandbox Code Playgroud)

我也尝试使用zsh,但它改为通常的根目录/.所以我认为它的bash具体.

Eta*_*ner 5

这是路径名解析规范的一部分:

由单个<slash>组成的路径名将解析为进程的根目录.无法成功解析空路径名.如果路径名以两个连续的<斜杠>字符开头,则前导<斜杠>字符后面的第一个组件可以按实现定义的方式解释,但是应将两个以上的前导<斜杠>字符视为单个<斜杠>字符.

所以你的shell只是遵循规范并且//单独留下,因为它可能在实现上被定义为除了之外的东西/.

  • @tmaier我没有.你必须去看源/等.看他们是否在任何地方提到它.或者尝试去问他们,但这可能是很久以前在大多数代码库中做出的决定. (2认同)
  • 长期以来使用了两个斜杠(在某些实现中)以指示随后的机器名称.(我记得阿尔托斯在20世纪80年代中期这样做过).那先于(我认为......)用于UNC名称的两个反斜杠. (2认同)