外部コマンドとは
外部コマンドとは、コマンドライン
シェルやその他の
コマンドラインインタプリタにおいて、組み込みではないコマンドのことを指します。これは、オペレーティングシステム(OS)の一部としてではなく、独立した実行ファイルとして提供されるコマンドです。
内部コマンドとの対比
外部コマンドは、内部コマンド(ビルトインコマンド)と対比されます。内部コマンドは、
コマンドラインインタプリタ自体に組み込まれており、追加のプログラムを呼び出すことなく直接実行できます。一方、外部コマンドは、実行時に外部のプログラムを呼び出す必要があります。
外部コマンドの実行
外部コマンドの実行は、実際には別のプログラムの起動を意味します。
コマンドラインインタプリタは、外部コマンドの名前を受け取ると、そのコマンドに対応する実行ファイルを探し、それを起動します。このプロセスは、
アプリケーションソフトウェアを起動するのと同様です。
外部コマンドの曖昧な境界
外部コマンドと
アプリケーションソフトウェアの境界は、しばしば曖昧です。両者は、外部のプログラムを実行するという点では共通しており、明確な区別は困難です。例えば、テキストエディタや画像編集ソフトのようなアプリケーションも、コマンドラインから実行される場合は、外部コマンドのように扱われることがあります。
代表的な外部コマンド
「代表的な外部コマンド」を特定することは、実は非常に難しいです。なぜなら、外部コマンドは数多く存在し、その種類はOSや利用環境によって大きく異なるからです。Unix系のOSであれば、`ls`(ファイル一覧表示)、`cp`(ファイルコピー)、`mv`(ファイル移動)、`rm`(ファイル削除)などがよく使われる外部コマンドです。Windowsであれば、`dir`(ファイル一覧表示)、`copy`(ファイルコピー)、`move`(ファイル移動)、`del`(ファイル削除)などが相当します。しかし、これらのコマンドもOSや
シェルによっては、内部コマンドとして提供されることもあります。
内部コマンドの例:cdコマンド
外部コマンドとして実装することが不可能なため、内部コマンドとして実装される代表例として`cd`(チェンジディレクトリ)コマンドがあります。`cd`コマンドは、現在の作業ディレクトリを変更するためのコマンドですが、このコマンドは
シェル自身の状態を変更するため、外部プログラムとして実装することはできません。もし`cd`が外部コマンドとして実装された場合、ディレクトリを変更するプログラムは起動された
シェルとは別のプロセスで実行されてしまい、元の
シェルの作業ディレクトリは変更されないという矛盾が生じてしまいます。そのため、`cd`コマンドは必ず内部コマンドとして実装されます。
まとめ
外部コマンドは、コマンドラインインターフェースにおける重要な要素であり、OSの機能を拡張する上で欠かせないものです。外部コマンドの存在により、ユーザーは様々なプログラムをコマンドラインから実行し、複雑なタスクを効率的に処理することができます。しかし、その境界は必ずしも明確ではなく、その柔軟さが特徴と言えるでしょう。