組み込みコマンドと名目上同じことを行う他のコマンドの間に根本的な違いはありますか?
例えば。組み込み関数は「特別な」処理を受けますか? ...実行に費やすオーバーヘッドは少ないですか? ..または単に車のダッシュボードのように「組み込み」になっていますか?
...これらの組み込み関数の明示的な(現在の)リストはありますか?
ベストアンサー1
あなたの意見を見ると、正確に何が混乱しているようです。シェルはい。カーネルはシステム管理を担当します。実際にプログラムをロードして実行し、ファイルにアクセスし、メモリを割り当てるなどの作業をする部分です。ただし、カーネルにはユーザーインターフェイスはありません。他のプログラムを仲介者として使用しなければ通信できません。
シェルはプロンプトを印刷し、入力内容の1行を読み取り、それを1つ以上のコマンドとして解釈してファイルを操作するか、別のプログラムを実行するプログラムです。 GUIが発明される前に、シェルはオペレーティングシステムの基本的なユーザーインターフェースでした。 MS-DOSではシェルが呼び出され、command.com
人々は通常これを変更しません。しかし、Unixでは長い間複数の殻ユーザーはその中から選択できます。
彼らは3つのタイプに分けることができます。 Bourne互換シェルは元のバージョンから派生した構文を使用します。ボンシェル。 Cシェルは生の構文を使用します。Cシェル。独自の構文を作成するか、プログラミング言語から構文を貸す非伝統的なシェルもあり、通常は最初の2種類よりも人気がありません。
組み込みコマンドは、他のプログラムをロードして実行する要求として解釈するのではなく、シェルが独自に実行する単純なコマンドです。これには2つの主な効果があります。まず、プログラムのロードと実行に時間がかかるため、通常は高速です。もちろん、コマンドの実行に時間がかかるほど、全体の実行時間と比較してロード時間はそれほど重要ではありません(ロード時間はかなり一定であるため)。
第二に、組み込みコマンドはシェルの内部状態に影響を与える可能性があります。そのため、このようなコマンドを発行します。cd
〜しなければならない外部プログラムがシェルの現在のディレクトリを変更できないため、組み込みです。効率性のために他のコマンド(たとえばecho
)が組み込まれている可能性がありますが、外部コマンドではないという本質的な理由はありません。
組み込みコマンドは、使用するシェルによって異なります。リストについては、該当するマニュアルを参照してください。たとえば、bash
組み込みコマンドはマニュアル第4章)。このtype
コマンドは、コマンドが組み込まれているかどうかを示します(シェルPOSIX互換)POSIXではtype
組み込みが必要なためです。シェルに組み込まれているプログラムではない場合は、which
おそらくシェルに組み込まれているプログラムについて知らず、外部プログラムだけを見つけるでしょう。