基本的な Linux 実行可能パスが表示されない

基本的な Linux 実行可能パスが表示されない

コマンドを使用して、lsや などの基本コマンドのパスを見つけようとしています。 のパスは表示されますが、 のパスは表示されません。 もちろん、両方のコマンドは正常に動作します。 何かアイデアはありますか?cdwhichlscd

$ 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」を使わないのはなぜですか? では、何を使うべきでしょうか?

関連情報