「ターミナル」、「シェル」、「tty」、「コンソール」の正確な違いは何ですか?

「ターミナル」、「シェル」、「tty」、「コンソール」の正確な違いは何ですか?

私はこれらの用語が緩く使われているときはほとんど同じ意味だと思います。

  • 端末
  • シェル
  • 端末
  • 快適

この用語は正確に何を意味しますか?

答え1

ターミナルはワイヤの終わり、エンクロージャはカメの家、ttyは奇妙な略語、コンソールは一種のキャビネットです。

まあ、とにかく語源的に言えば。

Unixの用語で短い答えは次のとおりです。

  • 端末 = tty = テキスト入出力環境
  • コンソール=物理端末
  • シェル=コマンドラインソルバー

コンソール、端末、およびttyは密接に関連しています。もともとは、コンピュータと対話できるデバイスを意味しました。 Unixの初期では、これは次のことを意味しました。テレタイププライター- 時々テレタイプライターまたは単に「tty」と呼ばれるタイプライターに似たデバイスです。 「ターミナル」という名前は電子製品の観点から由来し、「コンソール」という名前は家具の観点から由来しました。 Unixの歴史の初期に、電子キーボードとモニターは端末の標準機能になりました。

Unixの用語では、端末特別デバイスファイル多くの追加コマンドを実装します(I/W制御)読んで書く能力を超えて。最も一般的な意味では、端末ttyの同義語です。一部のttyは、キーボード入力やテキストモードの画面出力やシリアルラインを介して送信される入力と出力などのハードウェアデバイスの代わりにカーネルから提供されます。他のtty、時々呼び出される医者tty、次のプログラムによって(薄いカーネル層を介して)提供されます。端末エミュレータ、例えばXterm(動作Xウィンドウシステム)、画面(プログラムと他の端末との間に分離層を提供します)SSH(ある機械の端末を別の機械のプログラムに接続するため)予想される(ターミナルインタラクションスクリプトの作成に使用)など

ターミナルという用語は通常、キーボードとモニタを使用して、人々がコンピュータと対話するデバイスのより伝統的な意味を持つことがあります。例えば、X端末はシンクライアント、実際のアプリケーションは、より強力な他のコンピュータで実行されている間、キーボード、モニタ、マウス、および時には他の人間の相互作用周辺機器を駆動することが唯一の目的である特別な目的のコンピュータです。

快適一般に、物理的意味のある端末は、ある定義によると、機械に直接接続された基本端末である。コンソールはオペレーティングシステムに(カーネル実装)ttyとして表示されます。 LinuxやFreeBSDなどの一部のシステムでは、コンソールは複数のttyとして表示されます(これらのttyを切り替えるための特別なキーの組み合わせを含む)。問題を混同するために、各特定のttyに割り当てられた名前は「コンソール」、「仮想コンソール」です。 、「仮想端末」およびその他のバリエーション。

また、見ることができます仮想端末が「仮想」である理由は何であり、「実際の」端末は何/なぜ/どこにありますか?


シェルユーザーがログインしたときに表示される基本インターフェイスであり、主な目的は別のプログラムを実行することです。 (もともとのたとえ話がシェルがユーザーのホーム環境であるのか、それともシェルが他のプログラムが実行されているのかわかりません。)

Unix Circleではシェル具体的に言うのはコマンドラインシェル、実行するアプリケーションの名前を入力し、アプリケーションが機能する必要があるファイルまたはその他のオブジェクトの名前を入力してから、キーを押すことを中心にしますEnter。他の種類の環境では、「シェル」という単語は使用しません。例えば、ウィンドウシステムは「ウィンドウマネージャ「そして」デスクトップ環境"、"シェル"ではなく。

Unixシェルにはさまざまな種類があります。対話型使用に広く使用されているシェルは次のとおりです。吹く(ほとんどのLinuxインストールの場合はデフォルト)ジッシュ(機能性とカスタマイズ可能性を強調)(シンプルさを強調)。

コマンドラインシェルには、コマンドを結合するためのフロー制御構造が含まれています。対話型プロンプトでコマンドを入力することに加えて、ユーザーはスクリプトを書くこともできます。最も一般的なシェルには、以下に基づく共通の構文があります。ボンシェル。 「について議論するときシェルプログラミング「シェルはほとんど常にBourneスタイルのシェルを意味しますが、スクリプトによく使用されますが、高度なインタラクティブ機能を欠いているいくつかのシェルは次のとおりです。クッシュ(クッシュ)もっとあります禁煙健康増進協会バリアント。ほとんどすべてのUnixシリーズシステムには、Bourneスタイルのシェル(/bin/sh通常はash、ksh、またはBash)がインストールされています。

Unixシステム管理におけるユーザーのシェルログイン時に呼び出されるプログラムです。一般ユーザーアカウントにはコマンドラインシェルがありますが、アクセスが制限されているユーザーには限られた殻または他の特定のコマンド(ファイル転送アカウントのみ)


ターミナルとシェルの間の労働分業は完全には明確ではありません。主な仕事は次のとおりです。

  • 入力:端末はキー入力を制御シーケンス(例えばLeft\e[D)に変換します。シェルは制御シーケンスをコマンド(例えば\e[Dbackward-char)に変換します。
  • 行の編集、入力履歴、および完成機能はシェルで提供されます。
    • ターミナルは独自の行編集、記録、および完成機能を提供でき、実行の準備ができたときにのみシェルに行を送信します。このように動作する唯一の共通端末はM-x shellEmacsです。
  • 出力:シェルは、「表示foo」、「前景色を緑色に切り替える」、「カーソルを次の行に移動する」などのコマンドを発行します。端末はこの指示に従って動作します。
  • プロンプトは純粋にシェルの概念です。
  • シェルは、自分が実行するコマンドの出力を決して表示できません(リダイレクトされない限り)。出力履歴(ロールバック)は純粋に端末の概念です。
  • アプリケーション間のコピー - 貼り付けは端末で提供されます(通常、マウスや+ Ctrl、+などのキーシーケンスを使用)。シェルには、独自の内部コピー - 貼り付けメカニズム(たとえば、+や+)があります。ShiftVShiftInsertMetaWCtrlY
  • 職業管理(バックグラウンドでプログラムを起動して管理します。)主にシェルによって実行されます。ただし、端末は、フォアグラウンドジョブを終了する+、フォアグラウンドジョブを一時停止するCtrl+などのキーの組み合わせを処理する役割を果たします。CCtrlZ

答え2

端末または快適ユーザーがホストコンピュータと対話するために使用できるハードウェア。デフォルトではキーボードとテキスト画面です。
今日、ほぼすべての端末とコンソールは「仮想」端末とコンソールを表します。

端末を表すファイルは、伝統的に次のように呼び出されます。端末文書。 UNIX システムの「/dev」ディレクトリを見ると、多くのことがわかります。端末仮想コンソール(Linuxのtty1など)、仮想端末(pts / 0など)、または物理的に接続されたハードウェア部分(ttyS0は、最初のシリアルポートに接続されている物理シリアル端末(使用可能な場合))に接続します。ホスト))文書。

快適ハードウェアはホスト(またはホストの一部)に物理的に接続されている必要があります。これはシステムで特別な役割を果たします。メンテナンスのためにシステムにアクセスする主なポイントであり、特定の特別な操作はコンソールでのみ実行できます(例を参照single user mode)。 ㅏ端末通常はリモートハードウェアかもしれません。

最後に重要なのは、シェルを通じて特別プログラムです。制御端子そして、ユーザーに他のプログラム(bash、csh、tcshなど)を起動する方法を提供します。

端末エミュレータ物理端末(xterm、gnome-terminal、minicomなど)をシミュレートするプログラムです。

したがって、Linuxシステム(X11の下)で「テキストウィンドウ」を見ると、次のようになります。端末エミュレータ、に接続仮想端末、 で識別される端末実行されるファイルシェル

答え3

簡単な説明:

コンソールは端末です。システムにはコンソールと複数の端末があります。コンソールは通常、コンピュータの起動中にコンピュータを管理するための基本的なインターフェイスです。

ターミナルは、コマンドラインプログラムへの入出力を受信して​​送信できるセッションです。コンソールは端末の特別なケースです。

TTYは、本質的にプロセスが特定の端末にアクセスするために使用するカーネルリソースと呼ばれる擬似デバイスです。 TTYは、ハードウェア(シリアルポートなど)にバインドすることも、ユーザーがネットワーク経由でログインしたときに作成されるものなどの仮想でもよい。

シェルは、プログラムの制御と実行に使用されるプログラムです。通常、端末を介して対話的に使用されます。多くのシェルプログラムがあり、Bashは間違いなく今日最も一般的に使用されているシェルです。他のシェル(特定の順序なし)には、Bourne Shell、C-shell、Dash、Tsch、Ksh、および人気が高まるzshが含まれます。もっとあります。

GUIがあれば、ターミナルプログラムを使用して、ターミナルセッションにクールなサイズ変更可能な枠線を描き、スクロールバーを追加したり、テキストをフォーマットしたりするなどの操作を実行できます。これらはしばしばターミナルエミュレータと呼ばれ、時にはTABの概念を介して複数のセッションを処理できます。ターミナルエミュレータは通常、コマンドラインで対話型で作業できるようにシェルを起動します。

答え4

すでに2つの良い答えがありますが、フレーズに関する情報を追加したいと思いました。「仮想端末」。通常、端末の外観/機能を提供することを意味します。利子。一般的に。だが、Linux初創期(1994~95)には同義語として使われた。「仮想コンソール」(関連していない複数のユーザーインターフェイス)、いくつかの開発者によって。この使用法は文書にまだ存在します。 tty1、tty2...を指すために、2つの異なる用語が使用されました。最近(1996年以降)「仮想ターミナル」とは、以下を意味することもあります。端末エミュレータに基づいています。

Linux vt(テキストモードシステムコンソール用のドライバ)はカーネルの最初の部分です。もともとは「仮想端末」という意味でメインフレームに接続するために使われていたので名前が付けられました。仮想コンソールを制御するコード居住するvt.cしかも。 Linuxカーネルエンジニアは、tty1、tty2 ...を参照するために「コンソール」という単語を一貫して使用し、それを参照するために「vc_」プレフィックスを使用します。たとえば、機能がありますvc_allocate。一方、kbdWindowsやLinuxなどのユーザー空間ツール開発者は、console-tools「仮想コンソール」(VC)と「仮想端末」(VT)を同じ意味で使用します。すでに連絡していますアンドリスE.ブラウア初期の開発者(1994-95)が使用する用語を明確にするように求めました。 Andrisは親切にいくつかの答えを提供しました。彼は、VTとVCが同義語であり、「分離できない」略語であることを指摘しました。

通常、仮想コンソールは仮想端末ですが、その逆ではありません。仮想コンソールではなく「仮想端末」は実際に擬似端末(アンドリスが言ったように、これらはVTではない)。仮想コンソールとは異なり、仮想コンソールのカーネルはコンソールアプリケーション用の端末機能、擬似端末機能を提供します。PTY「デバイス」を使用して、コンソールアプリケーションとユーザー空間で実行される端末作成プログラムとの間の通信を調整します。。たとえば、sshd各ログインセッションに疑似デバイスを割り当てるXベースの端末エミュレータがあります。擬似デバイスを「コンソール」と呼ぶことはできません。これは間違いです。

関連情報