当前位置: 首页>>技术教程>>正文


filesystem – 什么是双斜线 (//) 目录?

问题描述

我错误地输入了 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
/

最佳方案

// 通常与 / 相同。 /// 必须与 / 相同。

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 Pathname Resolution specification 中:

A pathname consisting of a single slash shall resolve to the root directory of the process. A null pathname shall not be successfully resolved. A pathname that begins with two successive slashes may be interpreted in an implementation-defined manner, although more than two leading slashes shall be treated as a single slash.

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12117.html,未经允许,请勿转载。