type
コマンドとコマンドをいろいろ試していたらwhich
、奇妙なことが分かりました。
type
パスを返すか、コマンドがBashの組み込みコマンドであることを示します。
which
または組み込みコマンドの場合はパスを返すか、何も返しませんexit
。type
奇妙なのは、type echo
予想通りエコーが組み込まれていると書かれていることです。
ただし、which echo
echo 実行可能ファイルへのパスとして /bin/echo を指定します。これは、他の組み込みコマンドでは発生しないようです。
これら 2 つの違いは何なのか、Bash がスクリプトとコマンド ラインでどちらを実行するのか、そして 2 つの echo の背後にあるストーリーは何なのかを知りたいです。
私のシステムはUbuntu Desktop 12.04です
答え1
echo
組み込みコマンドとコマンドがありますecho
。 を使用してtype -a echo
、すべてを表示します。
type
それ自体がシェルの組み込み関数であるため、他の組み込み関数について認識することができます。
これはwhich
通常のコマンドにすぎません。したがって、どのシェルを使用しているかはわかりません。ディスク上のコマンドについてのみ通知されます。
通常、これtype
は、シェルに何らかの単語を入力した場合何が起こるかを示す正しいコマンドです。