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のエイリアスは設定されていません。それは標準のパスワードのように見えます:
$ which pwd
/bin/pwd
bash
には組み込みコマンドpwd
があり、シェルにpwd
と入力するだけで使用できます。
マンページの説明に従ってpwd
を取得するには、外部コマンドを強制的に使用する必要があります。実行可能ファイル(/bin/pwd
(あなたの場合)または行の前にenv
を追加して:env pwd
は、環境に設定を追加するために使用できるenv
コマンドを開始します(ただし、ここでは行いません)。次に、env
は、指定されたコマンドを開始します。 env
には組み込みのpwd
がないため、「実際の」/bin/pwd
が実行されます。
Bashの組み込みpwd
の利点は、bash
が現在のディレクトリを追跡するため、値を取得するコストがゼロであるのに対し、外部コマンドはファイルシステム全体を検索して決定する必要があります。より多くのパスIO集中的です。
そのマンページのドキュメント/bin/pwd
ですが、pwd
を実行すると、組み込みのシェルが使用されます。の出力を見る
type pwd
シェルの組み込みpwd
は長いオプションをサポートしていません(シェルのドキュメントをご覧ください。Bashを使用しているため、help pwd
は要約を提供します)。