回答:
のPOSIXマンページによるとpwd
、この-P
オプションは役に立つかもしれません:
-P書き込まれる絶対パス名には、パス名のコンテキストでシンボリックリンクタイプのファイルを参照するファイル名を含めないでください。
副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example
$ pwd -P
必要なものでなければなりません。
組み込みのpwdシェルは、シェルがユーザーを追跡するcd
(および保存する$PWD
)パスを使用します。つまり、複雑な(深い)パスへのシンボリックリンクがある場合、実際のパスではなく、そのディレクトリに変更するために入力した内容が通知されます。これは、ほとんどの場合に必要なものを提供するために行われます。
/bin/pwd
使用していますgetcwd
(これらの日は、読書ライブラリコールでシステムコール/proc/self/cwd
カレントディレクトリのための正規のパスを返し、サンセリフすべてのシンボリックリンクトラバーサル)。
Steven Dが指摘したように、無視するオプションpwd
があり-P
ます$PWD
。-L
のコンテンツを返すオプションもあります$PWD
。のmanページにpwd
は、デフォルトでどのオプションが使用されているかは記載されていませんが、経験から、上記の説明が正しいことがわかります(shell pwd
vs. /bin/pwd
)。ただし、おそらくこれに依存せず、単に使用する必要がありますpwd -P
。
/bin/pwd
GNU であるLinuxシステムの動作ですpwd
。がのPOSIXシステムでpwd
は/bin
。/bin/pwd
$ PWDを使用し、シンボリックリンクを含むパスを返す場合があります。GNU pwdは、その環境でPOSIXLY_CORRECT変数を見つけると、そのPOSIXの方法で動作します。
man pwd
シェルに入力してこのコマンドのオプションを見つけると、この情報が簡単に見つかることを指摘したいと思います。