(純粋に学問的な質問であることを参考にしてください...何か問題を解決しようとするのではなく、ただ答えが気になるだけです。)
ECHO(1)
マニュアルページ(GNU echo
)から:
注:シェルには通常、ここで説明されているバージョンを置き換える独自のバージョンのechoがあります。サポートされているオプションの詳細については、シェルのドキュメントを参照してください。
ECHO(1)
マニュアルページ(BSD echo
)から:
一部のシェルは、このユーティリティと同様または同じ組み込みのechoコマンドを提供できます。特に、sh(1)に組み込まれているechoは-nオプションを受け入れません。内蔵(1)のマニュアルページを参照してください。
echo
シェルで実行すると、内部コマンドが実行されますが、フルパスは、たとえば/bin/echo
外部プログラムを実行するように指定されます。
シェル自体に特定のコマンドを実装させるのはなぜですか?任意のコマンドが必要です〜しなければならないシェルによって実装されている(例えばcd
、read
など)しかしなぜecho
?あまりにも頻繁に使用され、プロセス設定やコンテキスト切り替えを避けることで、節約された時間が測定可能なためですか?特に歴史的に見るとそうです。
bash
たとえば、必ずしも必要ではない多くの機能があるという事実を無視し、速度要素が重要な場合、なぜexpr
、[
/ test
、mkdir
などのようなものをrmdir
シェルに入れないのですか?実装がほとんど文字通り関数呼び出しであるmkdir
andのようなものは、含める確かな候補のように見えます。rmdir
libc
答え1
速度要因が理由の1つです。これは、ファイル引数(たとえばecho
、など)なしでtest
一般的に使用されるコマンドに特に意味があります。printf
これにより、ファイルアクセスやファイルパラメータやコマンド自体を読み取ることなく操作を完了できます。
他のコマンドkill
もkill %1
。
一部のシェルは、単純なシェルスタイルパターンの名前変更などの機能を追加するmv
ために使用されるコマンドなど、他の「高レベル」コマンドも実装しています。zsh