我当时正在我的系统(OSX 10.8.3 / bash 版本 3.2.48(1)-release (x86_64-apple-darwin12))上的 bash 终端上工作,我不小心输入了“cd //”而不是“cd /”来返回根目录。
奇怪的是,它将我带到“//”,当我列出时,它看起来与“/”一模一样。
所以我的问题是:这两条路径之间是否存在语义差异?
这两条路径的用途是什么?或者这是一个错误吗?
答案1
在 Unix 及其衍生版本中,多个斜线连在一起的含义与一个斜线相同。OS X 是经过认证的 Unix,因此遵循该规范。
[路径] 以斜杠开头,后面跟着零个或多个文件名,文件名之间用斜杠分隔。路径名可以选择性地包含一个或多个尾部斜杠。多个连续的斜杠被视为与一个斜杠相同。
唯一的特殊情况是以 开头的路径//
。它的解释取决于实现(参见SUS 中的路径名解析):
以两个连续斜杠开头的路径名可以按照实现定义的方式进行解释,但两个以上的前导斜杠应被视为单个斜杠。