用語と混同しています。シェル、コンソール、および端末の違いは何ですか?
Linuxの世界では、キーボードから見たユーザーの観点からは、それらはすべて同じように見えます。違いは、それらが互いにどのように相互作用するかにあります。
シェルは実際にコマンドを処理して出力を返すプログラムです。ほとんどのシェルはフォアグラウンドとバックグラウンドプロセス、コマンド履歴とコマンドライン編集も管理します。これらの機能(およびその他の多くの機能)は、現代のLinuxシステムで最も一般的なシェルであるbash
で標準的なものです。
端末はシェルを実行するラッパープログラムを指します。数十年前、これはモニタとキーボードにすぎない物理的な装置でした。 unix/linuxシステムがより良いマルチプロセッシングおよびウィンドウシステムを追加するにつれて、この端末の概念はソフトウェアに抽象化されました。これで、コマンドを入力できるシェルを実行するGnomeウィンドウ環境でウィンドウを起動する Gnome Terminal などのプログラムができました。
コンソールは特殊な端末です。歴史的に、コンソールは、オペレーティングシステムとの低レベルでの直接通信に使用されるコンピュータの専用シリアルコンソールポートに接続された単一のキーボードおよびモニタであった。最近のLinuxシステムは仮想コンソールを提供しています。これらはキーの組み合わせ(例: Alt+F1 または Ctrl+Alt+F1;低レベルのLinuxオペレーティングシステムで処理される ファンクションキー 番号が異なるコンソール) - これは、インストールして実行するように設定する必要がある特別なサービスがないことを意味します。コンソールとの対話もシェルプログラムを使用して行われます。
シェルはプロンプトを表示し、ユーザーがコマンドを入力するのを待つプログラムです。それらを実行してから、別のプロンプトを印刷します。つまり、WindowsのCMDやUnixのBashと同じです。ターミナルまたはコンソールで実行できます。
コンソールはもともと物理的なもの、コントロールパネルでした。計算用語で言うと、通常はGUIの起動前または終了後に表示される表示を意味します。 GUIではなく表示に切り替えることもできます。オペレーティングシステムがエラーメッセージを表示する場所です。マルチユーザーコンピュータでは、実際にコンピュータに接続されているのはディスプレイです。混乱させるために、Windowsでは、コマンドShellを含むウィンドウ、つまり端末も意味します。
端末も元々はハードウェアで、コンピュータとの通信に使用されていました。今日では通常、コマンドライン(シェル)を持つウィンドウを指しています。これは、GUIウィンドウに表示されるか、またはGUIの代わりに表示されることがあります。
別の文脈、つまり開発について考えてみましょう。
開発についての深い知識がなくても、おそらく基本を知っているでしょう。つまり、プログラムを編集し、それをコンパイラまたはコンパイル済みアプリケーションを構築するインタプリタに提出するということです。
コンソールはあなたのプログラムのエディタのようなものです。それはを書くのに役立ちますが、実際には何も実行されません。終了したら、それをコンパイラに送ります。
好みのエディタ、vim、gedit、emacs、notepad ++、Netbeans、ecliseなどを使うことができますが、結局のところこれらはまったく異なるツールです。同じプログラムを書いても出力は同じになります。
この比喩では、シェルはコンパイラです。端末に入力されたコマンドはシェルに送信され、シェルはそれらを解釈して直ちに実行します。
したがって、端末はシェルのフロントエンドに過ぎませんが、コンパイラの場合と同様に、シェルには実際の言語が含まれています。
明らかに端末は正確にはテキストエディタではありません。それは主にファイルを生成するのではなく、基礎となるシェルにテキストを送信し、そこから出力を取得するためです。
シェルはコンパイラではありません。実際、実行可能ファイルを構築するのではなく、コマンドを解釈してすぐに実行します。
たとえこの大きな違いがあっても、私はこのメタファーがこのアイディアを理解するのに大いに役立つのを見つけます。
より詳細な説明については: https://askubuntu.com/a/506628/130518
次のテキストで、これに関する最も一般的な使用例を説明します。
端末はシェルを使用します。シェルは端末なしで実行できます。
日用品に関連するには:
もう1つの見方は、あなたの耳(入力)と口(出力)は音のための端子です。あなたの脳は、特定のシェル(処理)を使用してそれらの音の通訳です。
端末は私たち人間のためのものなので、シェルとの間で読み書きすることができます。シェルは人間の対話を必要としないバックグラウンドプロセスで実行できます。 cronジョブなので、端末は必要ありません。
存在する端末の例はほとんどありません。
存在するシェルの例はほとんどありません。
私はこれら二つが普通どのように働くかを書いただけです、それらが働く他の方法があります、しかしそれはより上級のユーザのためのものです。
コンソールとシェルの違いは、私がまだ理解していない点ですが、端末がシェルとどう違うのかを説明できます。
端末は( ウィキペディアによると ) "テキスト入力と表示のためのシリアルコンピュータインタフェースです。情報はmsgstr "事前に選択された整形文字の配列"#:。
ターミナルを使ってシェルとやり取りすることができますが、 と呼ばれることもあるテキストベースのGUIとやり取りすることもできますターミナルユーザーインタフェース 。例えば:
いずれの場合も、GUI要素はピクセルではなくテキストで「描画」されます。
それほど違いはありません。 "シェル"がプログラムであった頃の "ターミナル"はこのプログラムへのフロントエンドラッパーで、 "コンソール"はコンピュータへの物理的な接続(キーボード/スクリーン)でした。
実行しているOSによって違いがあります。 "標準的な"シェルは BASH で、これは通常Linux/Unixのすべてのフレーバーで利用可能です。 Windowsはまったく異なるシェルを使用しています。