在Linux中,"cd //"中的双重斜杠是什么意思?

vit*_*aut 36 linux bash shell cd directory-structure

我输入了一个命令,cd //而不是cd /错误的,而不是得到一个错误,因为我期望shell(Bash)显示一个提示,好像我在//目录中: -

<username>@<hostname>://$
<username>@<hostname>://$ pwd
//
Run Code Online (Sandbox Code Playgroud)

列出目录的内容显示它与之相同/.

那么究竟cd //做了什么以及有什么不同cd /呢?

Rah*_*thi 46

实际上它没有任何意义,被忽略了.

Bash FAQ E10 ::

E10)为什么'cd //'将$ PWD留作'//'?

POSIX.2在其对'cd'的描述中表示,在规范化当前工作目录时,可以用一个斜杠替换三个或更多前导斜杠.

我认为这是历史兼容性.某些版本的Unix和早期网络文件系统使用// hostname/path形式的路径来访问服务器"hostname"上的"路径".

另外,Unix的标准规定:

以两个连续斜杠开头的路径名可以以实现定义的方式解释,但是应将两个以上的主斜杠视为单个斜杠.


Ser*_*gar 17

AskUbuntu上的这个答案证实它们是同一个目录.此外,它有助于引用POSIX路径名解析规范:

由单个斜杠组成的路径名将解析为进程的根目录.无法成功解析空路径名.以两个连续斜杠开头的路径名可以以实现定义的方式解释,但是应将两个以上的主斜杠视为单个斜杠.