type
コマンドとwhich
コマンドをいじっていると、奇妙なことがわかりました。
type
は、パスを返すか、コマンドがBash組み込みであると伝えます。which
は、exit
やtype
などの組み込みのパスを返すか、何も返しません。
奇妙なのは、_type echo
_は、echoが期待どおりに組み込まれていると言っていることです。
しかし_which echo
_は、エコー実行可能ファイルへのパスとして/ bin/echoを提供します。これは、他の組み込みコマンドでは発生しないようです。
2つの違いは何ですか、1つのBashがスクリプトとコマンドラインで実行するために選択するもの、および2つのエコーの背後にあるストーリーは何かと思います。
私のシステムはUbuntu Desktop 12.04です。
組み込みのecho
とコマンドecho
があります。使用する type -a echo
をご覧ください。
type
自体はシェルの組み込みなので、他の組み込みについて知ることができます。
そしてwhich
は通常のコマンドにすぎません。したがって、どのシェルを使用しているかはわからず、ディスク上のコマンドについてのみ通知します。
通常、type
は、シェルにWordを入力した場合に何が起こるかを知らせる正しいコマンドです。