cd
rootになるまでスペルを間違えたとき、ターミナルで作業していました(/
)。誤って、入力//
してターミナルに入りました:
root@weblocalhost://#
入力するとpwd
応答//
が返されますが、入力ls -s
すると/
ディレクトリと同じリストが表示されます。
2つ以上入力すると、///
次のようになります。
root@weblocalhost:/#
/
2を除いて常に1 です。違いはありますか、何の//
ためですか?
cd
rootになるまでスペルを間違えたとき、ターミナルで作業していました(/
)。誤って、入力//
してターミナルに入りました:
root@weblocalhost://#
入力するとpwd
応答//
が返されますが、入力ls -s
すると/
ディレクトリと同じリストが表示されます。
2つ以上入力すると、///
次のようになります。
root@weblocalhost:/#
/
2を除いて常に1 です。違いはありますか、何の//
ためですか?
回答:
/
に相当 //
POSIX仕様から(強調を追加):
3.267パス名
ファイルを識別するために使用される文字列。POSIX.1-2008のコンテキストでは、パス名は終端のnullバイトを含めて{PATH_MAX}バイトに制限される場合があります。オプションの開始
<slash>
文字の後に、文字で区切られた0個以上のファイル名が続きます<slash>
。パス名には、オプションで1つ以上の末尾<slash>
文字を含めることができます 。先行する2 文字だけの場合を除いて、連続する複数の<slash>
文字は1と同じであると見なされます。<slash>
<slash>
そして:
4.12パス名の解決
...
単一で構成されるパス名<slash>
は、プロセスのルートディレクトリに解決されます。nullパス名は正常に解決されません。パス名が2つの連続する<slash>
文字で始まる場合、先頭の<slash>
文字に続く最初のコンポーネントは実装定義の方法で解釈される場合がありますが、先頭の3 文字以上は<slash>
単一の<slash>
文字として扱われます。
例外(cygwinとディレクトリ)の良い議論については、Linuxは複数の連続したパス区切り文字(/ home //// username /// file)をどのように処理するのかを参照してください。
ディレクトリには複数のスラッシュを追加できますが、何も変更されません。
たとえば、次の3つのコマンドはすべて同じことを行います。
cd /home
cd /home/
cd /home//
これらのいずれかを実行すると、現在の作業ディレクトリが/ homeに設定されます(で確認pwd
)。
私は推測し、あなたのためにプロンプトを構成していることをスマート何かを、あなたが予期しない動作に走ったことを。いつ何を手に入れますecho $PS1
か?
それを説明するかもしれないhttps://unix.stackexchange.com/のコメントへのリンク。