web-dev-qa-db-ja.com

Linuxでは、 `cd //`内のダブルスラッシュ//はどういう意味ですか?

誤ってcd //ではなくcd /コマンドを入力しましたが、エラーが発生する代わりに、シェル(Bash)が//ディレクトリにいるかのようにプロンプ​​トを表示しました

<username>@<hostname>://$
<username>@<hostname>://$ pwd
//

ディレクトリの内容をリストすると、それが/と同じであることがわかります。

では、cd //は正確には何をするのでしょうか。cd /との違いは何ですか。

39
vitaut

実際にはそれは何も意味せず、無視されます。

Bash FAQ E10: から:

E10)なぜ「cd //」は$ PWDを「//」のままにするのですか?

POSIX.2の「cd」の説明では、現在の作業ディレクトリを正規化するときに、3つ以上の先行スラッシュを1つのスラッシュに置き換えることができると述べています。

これは、歴史的な互換性のためだと思います。 UNIXの特定のバージョン、および初期のネットワークファイルシステムでは、// hostname/pathという形式のパスを使用して、サーバー「hostname」の「path」にアクセスしていました。

また nix標準 は次のように述べています:

2つの連続するスラッシュで始まるパス名は、実装定義の方法で解釈される場合がありますが、2つ以上の先行スラッシュは単一のスラッシュとして扱われます。

49
Rahul Tripathi

これは、AskUbuntuの answer で、同じディレクトリであることを確認しています。さらに、 POSIXパス名解決の仕様 から引用するとわかりやすくなります。

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

18