GNU/Linux >> Linux の 問題 >  >> Linux

Unix、「/」と「//」で始まるパスの違いは?

この質問にはすでに回答があります :Linuxは複数の連続したパス区切り文字(/ home //// username /// file)をどのように処理しますか?

(6つの回答)
3年前に閉鎖されました。

unix / linuxでは、パス内の任意の数の連続するフォワードスラッシュは、通常、単一のフォワードスラッシュと同等です。例

$ cd /home/shum
$ pwd
/home/shum
$ cd /home//shum
$ pwd
/home/shum
$ cd /home///shum
$ pwd
/home/shum

しかし、何らかの理由で、絶対パスの先頭にある2つのフォワードスラッシュは特別に扱われます。例

$ cd ////home
$ pwd
/home
$ cd ///
$ pwd
/
$ cd //
$ pwd
//
$ cd home//shum
$ pwd
//home/shum

パッチ内の他の場所にある他の数の連続するフォワードスラッシュは切り捨てられますが、それを基準にしてファイルシステム内を移動しても、最初の2つは残ります。

どうしてこれなの? /…と//…の間に違いはありますか?

承認された回答:

ほとんどの場合、パス内で繰り返されるスラッシュは、単一のスラッシュに相当します。この動作はPOSIXによって義務付けられており、ほとんどのアプリケーションがそれに準拠しています。例外は、「2つの連続するスラッシュで始まるパス名は、実装定義の方法で解釈される可能性がある」ということです(ただし、///foo /fooと同等です 。

ほとんどのユニスは、最初の2つのスラッシュで特別なことは何もしません。特にLinuxはそうではありません。 Cygwinの機能://hostname/path ネットワークドライブ(SMB)にアクセスします。

実際、Linuxが//で特別なことをしているわけではありません。 :bashの現在のディレクトリ追跡です。比較:

$ bash -c 'cd //; pwd'
//
$ bash -c 'cd //; /bin/pwd'
/

Bashは、OSが//を処理している可能性があることに注意を払っています。 特別にそしてそれを保ちます。ダッシュも同じです。 Kshとzshは、Linuxで実行している場合はそうではありません。(私はチェックしていませんが)コンパイル時の設定があると思います。


Linux
  1. / bin/falseと/sbin/nologinの違い

  2. Linuxは複数の連続したパスセパレーター(/ home //// username /// file)をどのように処理しますか?

  3. Linux:/ dev / console、/ dev / tty、/ dev / tty0の違いは?

  1. 2>&-、2> / dev / null、|&、&> / dev/nullと>/dev / null 2>&1の違いは?

  2. / sbin/nologinと/bin/ falseの違いは何ですか?

  3. /optと/usr/ localの違いは?

  1. ‘$の違い。 Foo」と「$./foo」??

  2. 「/」に「..」エントリがあるのはなぜですか?

  3. /var/log/messages、/var/log/syslog、および/var/log/kern.logの違いは?