コマンドを使用して、ls
や などの基本コマンドのパスを見つけようとしています。 のパスは表示されますが、 のパスは表示されません。 もちろん、両方のコマンドは正常に動作します。 何かアイデアはありますか?cd
which
ls
cd
$ which ls
/bin/ls
$ which cd
$
答え1
cd
は常にシェル自体によって提供される組み込みコマンドです。外部ユーティリティとしては見つかりません。これは決して Linux に固有のものではありません。
からcd
POSIX標準の「アプリケーションの使用法」セクション:
は現在のシェル実行環境に影響するため
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