Mac OS X を使い始めたばかりです。ルートディレクトリの下に/
、 という名前のフォルダがありますVolumes/
。
ディレクトリ の下に移動するとVolumes/
、 というディレクトリがありますMacintosh HD/
。 ディレクトリ の下に移動するとMacintosh HD/
、ルートに戻り、Volumes/
再び ディレクトリ の下に移動できます。 これを数回繰り返して、pwd を使用して現在のディレクトリを確認すると、 というディレクトリにいることがわかります/Volumes/Macintosh/Volumes/Macintosh/Volumes/Macintosh
。
この背後にある論理を理解できません。誰か説明してくれませんか?
答え1
まず、/Volumes/
ディレクトリとはマウントされたすべてのボリュームMac OS X システムでは、当然のことながら表示されます。この動作が発生する理由は、システム上の (root)Macintosh/
へのシンボリック リンクにすぎないためです。これは、ボリュームへの (root) アクセスに加えて、そのボリュームへの名前付きアクセスも保持するよう/
に行われます。/Volumes
/
たとえば、システムのターミナルにアクセスし、次のようcd /Volumes
に入力するとls -la
、次のような表示が出ることがあります。
drwxrwxrwt@ 7 root admin 238 Sep 13 23:55 .
drwxr-xr-x 29 root wheel 1054 Sep 13 01:43 ..
lrwxr-xr-x 1 root admin 1 Sep 13 16:42 Macintosh -> /
シンボリック リンクは基本的に Finder のエイリアスのようなものですが、ファイル システム レベルでは、シンボリック リンクは「エイリアス」そのものです。
なぜこのように動作するのかという/Volumes/Macintosh/Volumes/Macintosh/Volumes/Macintosh
と、pwd
ファイル システムがパスを解釈しているからです。確かに奇妙でわかりにくいかもしれませんが、混乱しないでください。/Volumes/
その下でマウントされているボリュームのうち、このように動作するのはシステムのルート ( /
) ボリュームだけです。他のボリュームをマウントすると、それらは に表示され/Volumes/
、実際にマウントされたボリュームでありシンボリック リンクではないため、このようにループすることはありません。
さて、ネストされたシンボリックリンク/ディレクトリの動作の「理由」については、答えるのが簡単な質問ではありません。しかし、基本的にすべてのLinux/Unixシステムはそのように動作します。そしてUnix & Linux Stack Exchangeのこの質問と回答のスレッドシンボリック リンクによってネストされたディレクトリが存在する理由について、非常に詳しく説明しています。