あなたは本当にいる/home/cpm135/public_html/class
-それは「私の現在の作業ディレクトリは何ですか」という質問に対する唯一の正しい答えです。
を参照するとき /var/lib/class
...と、それは実際にあなたがどこにいるかではなく、そこに到達するために使用したパスについての詳細です。
走るとき /bin/pwd
、それは。および..ディレクトリー(の上部にリストされているものls -la
)。そして..と。同じディレクトリを参照します。それがすべて完了すると、現在の作業ディレクトリが何であるかがわかります。
pwd
組み込みのシェルを実行すると、この手順は実行されません(必要に応じて実行される場合もあります)-代わりに、ここに到達するまでのパスが記憶されます。したがって、cd
コマンドを実行するたびに、シェルは、現在の場所を取得するためのパスの一部としてそれを記憶し、pwd
、cd
実行したすべてのコマンドに基づいて計算したもの出力します。作業ディレクトリ。
aを実行してfoo ln -s . foo
を続けるcd
と、事態は本当に奇妙になる可能性があります- /bin/pwd
まだ同じディレクトリにいるpwd
と言いますが、シェルビルトインは/foo/foo/foo/foo/foo/foo
、そのようなディレクトリが実際に存在していなくても、あなたがいると言います。(それは言った-あなたはおそらくできる cd
それにに入ること。)
別の混乱の原因は、ディレクトリの名前が変更された場合です。 /bin/pwd
するとすぐに変更が反映されますが、ビルトインpwd
は、古いディレクトリ名が問題ではないことを伝える何かを実行するまで動作しません。