我输入了一个命令,cd //
而不是cd /
错误的,而不是得到一个错误,因为我期望shell(Bash)显示一个提示,好像我在//
目录中: -
@ ://$ @ ://$ pwd //
列出目录的内容显示它与之相同/
.
那么究竟cd //
做了什么以及有什么不同cd /
呢?
实际上它没有任何意义,被忽略了.
从Bash FAQ E10 ::
E10)为什么'cd //'将$ PWD留作'//'?
POSIX.2在其对'cd'的描述中表示,在规范化当前工作目录时,可以用一个斜杠替换三个或更多前导斜杠.
我认为这是历史兼容性.某些版本的Unix和早期网络文件系统使用// hostname/path形式的路径来访问服务器"hostname"上的"路径".
另外,Unix的标准规定:
以两个连续斜杠开头的路径名可以以实现定义的方式解释,但是应将两个以上的主斜杠视为单个斜杠.
AskUbuntu上的这个答案证实它们是同一个目录.此外,它有助于引用POSIX路径名解析规范:
由单个斜杠组成的路径名将解析为进程的根目录.无法成功解析空路径名.以两个连续斜杠开头的路径名可以以实现定义的方式解释,但是应将两个以上的主斜杠视为单个斜杠.