ディレクトリが/dir1
あり/dir2/linked
、後者が前者へのシンボリックリンクであるとしましょう。
ときにあなたがcd
するlinked
とpwd
、あなたは出力を得ます/dir2/linked
。その後cd ..
、あなたは着られるでしょう/dir2
。この振る舞いは、あなたが/dir2/linked
以前にいたという概念と一致しています。ただし、私が理解しているように、..
任意のディレクトリの親ディレクトリ()は、ディレクトリiノード(つまり、物理的にディスク)に格納されています。明らかに、/dir2/linked
は本当になので/dir1
、iノードの親ディレクトリは/
さらに複雑な問題に、内部ながら/dir2/linked
、の出力ls ..
とはcd .. ; ls .
異なっています!cd
シンボリックリンクされたパスを尊重しているように見えますが、ls
「物理的な」パスを尊重しています。ただし、この質問で述べたようにcd -P
、このユースケースにはあります。
man pwd
「物理」および「論理」作業ディレクトリについて言及していますが、この時点ではまだいくつか質問があります。
- で
PWD
述べたように、この動作は常に環境変数によって提供されman pwd
ますか? - それらが両方ともシェルコマンド(つまり、プログラムではない)である場合、なぜデフォルト
cd
でls
動作が異なるのですか? - 一般的なプログラム(シェルコマンドではない)
PWD
は、物理パスの代わりに使用しますか?実装次第だと思いますが、経験則はありますか?