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
皆さんも見てください」「which」を使わないのはなぜですか?それでは何を使うべきですか?」