cd /proc/$$/root/bin
cd /bin
両方のディレクトリでls
コマンドを実行した後、両方のディレクトリのコンテンツが同じであることがわかりました(コマンドのリストにすぎません)。
これが両方のディレクトリに同じコマンドリストを持つ特定の理由はありますか?
/proc
「仮想」ファイルシステム カーネルおよびプロセス関連の詳細を公開します。
$$
は シェル変数 実行しているシェルのPIDを提供します。
/proc/$$/root
は、現在のシェルから見たルートディレクトリへの シンボリックリンク です。 chrooting の場合、これは変わる可能性があります。
要するに、2つのは同じディレクトリであるため、2つの外観は同じに見えます。 ls -ld /proc/$$/root
を実行すると、/
へのシンボリックリンクであることがわかります。したがって、/proc/$$/root/bin
と/bin
は同じディレクトリです。
それは、実際には同じディレクトリであるためです¹:
$ test /proc/$$/root/bin -ef /bin; echo $?
0
(-ef
テストは、2つのパスが同じファイルオブジェクトを参照しているかどうかをチェックします。)
同じことが/proc/$$/root
および/
にも当てはまります。
$ readlink /proc/$$/root
/
¹/proc/$$/root
が別のディレクトリを指す可能性のあるchroot
環境にいる場合を除きます。