为什么可以 bash cd 到 //?

Cra*_*aig 7 bash shell

在 bash 中,如果你 cd 到 // 你的密码将是 //,但如果你 cd 到 / 或 ///+ 你的密码将是 /。这是有原因的还是只是一个奇怪的错误?

我已经在 osx 和 ubuntu 中尝试过这个。

Den*_*son 8

来自Bash 常见问题解答

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

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

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

  • 从技术上讲,Windows 使用 \\ 作为 UNC 路径。 (5认同)
  • 注意 Windows *仍然* 使用 // 作为网络路径,因此这也可能是 SMB 兼容性问题。 (2认同)