为什么有一个 // 目录?

为什么有一个 // 目录?

我刚刚发现我的计算机文件系统有一个非常奇怪的功能(错误?)。我可以执行cd //,它会转到//目录,但显示与目录相同的所有文件/。这是为什么?如果我cd ..在 中/,它会停留在///是唯一有效的方法——我尝试了多个斜杠,但它只是停留在 中/

答案1

来自POSIX 规范

3.266:... 多个连续的斜线被视为与一个斜线相同。

4.11:... 以两个连续斜杠开头的路径名可以按照实现定义的方式进行解释,但两个以上的前导斜杠应被视为单个斜杠。

第二部分表示以 // 开头的路径可以具有特殊含义。这种情况很少使用,并且可能成为错误的根源:https://stackoverflow.com/a/7816833/163956

答案2

看起来 Bash 会规范化路径名,但不会规范化路径名开头的双斜杠。这是可以理解的,因为在某些 Unix 系统上(但不是 Mac OS X),//可能表示网络路径,而 Bash 旨在实现可移植性。请参阅这个问题在 Unix.SE 上存在双斜线问题。

由于在 Mac OS X 中//没有特殊含义,因此您实际上是在/

答案3

// 和 / 之间没有区别。只是 bash 可以容忍多个斜杠。

请注意,您还可以在路径中使用//,它不会抱怨,并且它会像/一样对待它们。

相关内容