pwd が --physical のような長いオプションを受け入れないのはなぜですか?

pwd が --physical のような長いオプションを受け入れないのはなぜですか?

コマンドのマニュアルを表示するとpwd、次のような長いオプション--physicalがサポートされていると書かれています。

$ man pwd
PWD(1)                           User Commands                          PWD(1)

NAME
       pwd - print name of current/working directory

SYNOPSIS
       pwd [OPTION]...

DESCRIPTION
       Print the full filename of the current working directory.

       -L, --logical
              use PWD from environment, even if it contains symlinks

       -P, --physical
              avoid all symlinks

しかし、次のように入力すると失敗します

$ pwd --physical
-bash: pwd: --: invalid option
pwd: usage: pwd [-LP]

ロングオプションが機能しないのはなぜですか?

RHEL 6.4 を使用しています。pwd のエイリアスは設定されていません。標準の pwd のようです:

$ which pwd
/bin/pwd

答え1

bash組み込みコマンドがあり、シェルにpwd入力するだけで使用できます。pwd

pwdマニュアルページで説明されているように を取得するには、外部コマンドの使用を強制する必要があります。これを行うには、実行可能ファイルへのフルパス (/bin/pwdこの場合は ) を指定するか、env行の前に を追加します。これにより、環境に設定を追加するために使用できるコマンドがenv pwd開始され(ただし、ここでは実行されません)、指定されたコマンドが開始されます。 には組み込み がないため、「実際の」が実行されます。envenvenvpwd/bin/pwd

pwdbash の組み込みの利点はbash、現在のディレクトリを追跡するため、値の取得にコストがかからないことです。一方、外部コマンドは、パスを決定するためにファイルシステムを検索する必要があり、IO の負荷がはるかに高くなります。

答え2

そのマニュアルページには が記載されています/bin/pwdが、実行するとpwdシェル組み込み関数が使われます。

type pwd

シェルの組み込みではpwd長いオプションはサポートされていません (シェルのドキュメントを参照してください。Bash を使用しているため、help pwd概要が提供されます)。

関連情報