web-dev-qa-db-ja.com

同じコンテンツを持つディレクトリが2つあるのはなぜですか?

  1. cd /proc/$$/root/bin
  2. cd /bin

両方のディレクトリでlsコマンドを実行した後、両方のディレクトリのコンテンツが同じであることがわかりました(コマンドのリストにすぎません)。

これが両方のディレクトリに同じコマンドリストを持つ特定の理由はありますか?

5
snoop

/proc「仮想」ファイルシステム カーネルお​​よびプロセス関連の詳細を公開します。

$$シェル変数 実行しているシェルのPIDを提供します。

/proc/$$/rootは、現在のシェルから見たルートディレクトリへの シンボリックリンク です。 chrooting の場合、これは変わる可能性があります。

要するに、2つの同じディレクトリであるため、2つの外観は同じに見えます。 ls -ld /proc/$$/rootを実行すると、/へのシンボリックリンクであることがわかります。したがって、/proc/$$/root/bin/binは同じディレクトリです。

20
EnzoR

それは、実際には同じディレクトリであるためです¹:

$ test /proc/$$/root/bin -ef /bin; echo $?
0

-efテストは、2つのパスが同じファイルオブジェクトを参照しているかどうかをチェックします。)

同じことが/proc/$$/rootおよび/にも当てはまります。

$ readlink /proc/$$/root
/

¹/proc/$$/rootが別のディレクトリを指す可能性のあるchroot環境にいる場合を除きます。

0
David Foerster