web-dev-qa-db-ja.com

組み込みのechoコマンドと/ bin / echoの違いは何ですか?

typeコマンドとwhichコマンドをいじっていると、奇妙なことがわかりました。

typeは、パスを返すか、コマンドがBash組み込みであると伝えます。whichは、exittypeなどの組み込みのパスを返すか、何も返しません。

奇妙なのは、_type echo_は、echoが期待どおりに組み込まれていると言っていることです。

しかし_which echo_は、エコー実行可能ファイルへのパスとして/ bin/echoを提供します。これは、他の組み込みコマンドでは発生しないようです。

2つの違いは何ですか、1つのBashがスクリプトとコマンドラインで実行するために選択するもの、および2つのエコーの背後にあるストーリーは何かと思います。

私のシステムはUbuntu Desktop 12.04です。

6
Arcana

組み込みのechoとコマンドechoがあります。使用する type -a echoをご覧ください。

type自体はシェルの組み込みなので、他の組み込みについて知ることができます。

そしてwhichは通常のコマンドにすぎません。したがって、どのシェルを使用しているかはわからず、ディスク上のコマンドについてのみ通知します。

通常、typeは、シェルにWordを入力した場合に何が起こるかを知らせる正しいコマンドです。

6
michas