PWDコマンドは、シェル組み込みおよび/ binに/ PWDの両方です。通常の状況では、ビルトインは/ bin / pwdよりも優先して実行されます。pwdコマンドは、次のように呼び出すことができます。pwd -L
またはpwd -P
、組み込みと/ bin / pwdの両方をデフォルトでpwd -L
manページから呼び出すことができます。
-L、--logicalシンボリックリンクが含まれている場合でも、環境からPWDを使用します
したがって、pwdを実行すると、実際にはpwd -Lが実行され、実際には$ PWD(存在する場合)が出力されます。を実行するとsudo pwd
、sudoは、env_keep
ディレクティブを介して渡すように指示されている環境変数のみを提供します。PWDは通常このリストにないため、sudo pwdはどこにあるかを確認する必要があり、実際には次のように実行されますpwd -P
-P、-物理的にすべてのシンボリックリンクを回避
問題を解決する方法は、pwd -P
常に物理ディレクトリパスが必要な場合に使用するか、(@ Felixが言うように)PWDを環境変数のリストに追加して、sudoersのenv_keepディレクティブを介して保持することです。
env_keep += "PWD"