web-dev-qa-db-ja.com

ターミナルまたはコンソールまたはシェルまたはコマンドプロンプト?

私は、違いを知らずにこれらの用語を同じ意味で使用しています。
これらすべての用語の実際の違いは何ですか?

29
dsynkd

はい、これらの用語については多くの混乱があります。私はそれを突き刺しますが、これは本当に意味論であり、用語は日常のスピーチで交換可能に使用されるという条件で:

「シェル」は、他のプログラムを実行するプログラムに使用される用語です。別のプログラムをラップするため、その名前が付けられます。たとえば、Windows Explorerはシェルと呼ばれますが、Windowsエクスプローラーはシェルです。私が使用したすべての言語とプラットフォームでは、どのプログラムもシェルにすることができます。

編集:「端末」を定義しませんでした。その名前は、ユーザーとの通信の終点になります。具体的には、エンドユーザー通信に使用されるタイプライターデバイスでした。今日ではかなり一般的であり、擬似端末(Linuxのpts ps -ef)、GUIによって管理される文字ベースのセッションです。 Windowsでは、これは「コンソールウィンドウ」と呼ばれます。

「コンソール」とは、WindowsとUNIXでは特定の、しかし異なるものを意味します。 UNIXでは、ドングルを介さずに物理的にマシンに接続されたのはtty(TeleTYpewriter、a VDUは「ガラステレタイプ」)でした(UNIXで長い道のりに戻ります) )。起動メッセージと終了メッセージ、およびPANICなどのアラートを送受信した端末bashとKornシェルの両方のスクリプトは、TTY /コンソールなしで擬似デーモンとして実行できます。

「コンソール」という用語は、より正確な「標準入力」、「標準出力」、および「標準エラー」(stdin、stdout、stderr、Cから)と混同されることがよくあります。これらはストリームと呼ばれることもあり、デフォルトでほとんどのシステムの端末に送信されます。 UNIXでは最初の3つのファイル記述子、Windowsでは最初の3つのファイルハンドル、両方で0、1、2です。プログラムはこれらを適切なアクセス権を持つ任意のファイルシステムに転送できますが、通常はそうではありません-多くの場合、親プロセスからそれらを継承します(過去にすべてのOSがこれを実行したわけではありません)。

Windowsでは、「コンソール」プログラムはコンソールウィンドウを備えたプログラムであり、「DOSボックス」と呼ばれることがよくあります。したがって、cmd.exeはコンソールプログラムですが、Perl.exeもpython.exeも同じです(pythonw.exeはそうではありません)。

コマンドプロンプトは、コマンドラインインタープリターまたはCLIによって表示される入力の招待です。 UNIXの慣例では、rootを除くすべてのユーザーに対して$で終わります。rootは#で終わります。 cshはこの規則に従わず、%を使用します。通常、Windows CLIのプロンプトは>で終わります。すべての場合において、これらはユーザーが変更できます。

Windowsのcmd.exeのショートカットとウィンドウタイトルには、コマンドプロンプトにアクセスできるため、「コマンドプロンプト」というラベルが付いていると思います。 「コマンドラインには...コマンドシェルウィンドウからアクセスします」という「Windowsコマンドライン」というMicrosoft Pressの書籍があります。そのため、Microsoftでさえ条件を混ぜています。

したがって、cmd.exeはシェルとCLI、およびコンソールプログラムです。 sqlplusはCLIですが、シェルではなく、Windowsではコンソールプログラムです。 Windowsエクスプローラーはシェルですが、CLIまたはコンソールプログラムではありません。 BashとKornシェルはどちらもCLIを備えたシェルであり、コンソールから実行できますが、それだけではありません。

23
cdarke