我错误地输入了cd //
。cd /
令我惊讶的是,当前目录显示为//
。
这个目录是什么?它为什么存在?
apple@snipped $ pwd
/home/apple
apple@snipped $ cd /
apple@snipped $ pwd
/
apple@snipped $ cd //
apple@snipped $ pwd
//
apple@snipped $ cd ///
apple@snipped $ pwd
/
答案1
//
通常与 相同/
。 ///
必须与 相同/
。
ls
会显示带cd //
您进入根目录,就像这样cd /
。
$ cd /
$ ls
bin
boot
dev
...
$ cd //
$ ls
(same as above)
确认它们绝对是同一目录的技术方法是:
$ cd /
$ stat -c "%i" .
2
$ cd //
$ stat -c "%i" .
2
它们将打印相同的 inode 编号,这意味着它们是同一个东西。
血腥细节记录在POSIX 路径名解析规范:
由单个斜杠组成的路径名应解析为进程的根目录。空路径名将无法成功解析。以两个连续斜杠开头的路径名可以实现定义的方式进行解释,但两个以上的前导斜杠应被视为单个斜杠。