デフォルトのLinux実行可能ファイルパスが表示されない

デフォルトのLinux実行可能ファイルパスが表示されない

lscd基本コマンド(たとえば、コマンドを使用)へのパスを見つけようとしますwhich。パスは見えますが、lsパスは見えませんcd。もちろん、両方のコマンドはうまく機能します。どんなアイデアがありますか?

$ which ls
/bin/ls
$ which cd
$

答え1

cd常にシェル自体から提供される組み込みコマンドです。外部ユーティリティでは検索されません。これは決してLinuxに限定されていません。

~からcdPOSIX規格の「アプリケーションの使用」セクション:

cd現在のシェル実行環境に影響を与えるため、常に通常のシェル組み込みとして提供されます。次のいずれかのようにサブシェルまたは別のユーティリティ実行環境で呼び出す場合:

(cd /tmp)
nohup cd
find . -exec cd {} \;

呼び出し側環境の作業ディレクトリには影響しません。


コマンドパスを見つけるための移植可能な方法は、次のものを使用することですcommand -v

bash-4.4$ command -v ls
/bin/ls
bash-4.4$ command -v cd
cd

typeもう少し詳しく説明します。

bash-4.4$ type ls
ls is /bin/ls
bash-4.4$ type cd
cd is a shell builtin

皆さんも見てください」「which」を使わないのはなぜですか?それでは何を使うべきですか?

関連情報