ディレクトリが/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は、物理パスの代わりに使用しますか?実装次第だと思いますが、経験則はありますか?