ダブルスラッシュ(//)ディレクトリとは何ですか?


29

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
/

回答:


42

//通常はと同じ/です。 ///と同じでなければなりません/

lscd //同じように、ルートディレクトリに移動したことを示しますcd /

$ cd /
$ ls
bin
boot
dev
...
$ cd //
$ ls
(same as above)

それらが確実に同じディレクトリであることを確認する技術的な方法は次のとおりです。

$ cd /
$ stat -c "%i" .
2
$ cd //
$ stat -c "%i" .
2

それらは同じiノード番号を出力します。つまり、それらは同じものです。

厄介な詳細は、POSIXパス名解決仕様に文書化されています

単一のスラッシュで構成されるパス名は、プロセスのルートディレクトリに解決されます。nullパス名は正常に解決されません。連続する2つのスラッシュで始まるパス名は、実装定義の方法で解釈できますが、2つ以上の先行スラッシュは単一のスラッシュとして扱われます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.