在 Linux 系统中,如果您将目录更改为“//”,则可以浏览文件系统,而您的根目录将是“//”。如果有更多的斜杠,则不会发生这种情况,更多的斜杠会产生原始的“/”。
可能的工作目录:
[user@host /]$ cd //
[user@host //]$ pwd # Results in double root
//
[user@host //]$ cd srv/ftp
[user@host ftp]$ pwd # Double root is preserved but no other effects observed
//srv/ftp
[user@host /]$ cd ////
[user@host /]$ cd ///////
[user@host /]$ cd ////////// # Additional slashes change nothing
[user@host /]$
为什么会发生这种情况?这怎么可能成立呢?
(在 Linux 主机 4.18.16-arch1-1-ARCH #1 SMP PREEMPT 上观察到,时间为 2018 年 10 月 20 日星期六 22:06:45 UTC x86_64 GNU/Linux)
答案1
经过进一步的搜索后我找到了答案,结果是:
允许使用多个斜杠,它们等同于单个斜杠。根据 Single Unix 规范(版本 3),基本定义 §3.266 路径名:“多个连续的斜杠被视为与一个斜杠相同。”
有一个例外:如果路径名以两个斜杠开头,则可能会被区别对待(参考:基本定义 §4.11 路径名解析)。Linux 本身不会这样做,但有些应用程序可能会这样做,其他 unix-ish 系统也会这样做(例如 Cygwin)。