これらの用語は、大まかに使用すると、ほとんど同じものを指すと思います。
- ターミナル
- シェル
- tty
- コンソール
これらの各用語は正確に何を指しますか?
これらの用語は、大まかに使用すると、ほとんど同じものを指すと思います。
これらの各用語は正確に何を指しますか?
回答:
ターミナルは電線の端にあり、シェルは亀の家であり、ttyは奇妙な略語であり、コンソールは一種のキャビネットです。
とにかく、語源的に言えば。
UNIXの用語では、簡単な答えは
コンソール、端末、ttyは密接に関連しています。もともとは、コンピュータとやり取りできる機器のことでした。Unixの初期には、タイプライター(テレタイプライターと呼ばれることもある)、または略して「tty」に似たテレプリンタースタイルのデバイスを意味していました。「端末」という名前は電子的な観点から来ており、「コンソール」という名前は家具の観点から来ています。UNIXの歴史のごく初期に、電子キーボードとディスプレイが端末の標準になりました。
UNIXの用語では、ttyは特定の種類のデバイスファイルであり、読み取りおよび書き込み以外の多くの追加コマンド(ioctl)を実装します。最も一般的な意味では、端末はttyと同義です。一部のttyは、ハードウェアデバイスに代わってカーネルによって提供されます。たとえば、キーボードからの入力とテキストモードの画面への出力、またはシリアルラインを介して送信される入出力があります。疑似ttyと呼ばれることもあるその他のttyは、Xterm(X Window Systemで実行中)、Screenなどの端末エミュレーターと呼ばれるプログラムによって(シンカーネルレイヤーを介して)提供されます。(プログラムと別の端末間の分離層を提供します)、Ssh(あるマシン上の端末を別のマシン上のプログラムに接続します)、Expect(端末相互作用のスクリプト用)など
ターミナルという言葉は、コンピューター、通常はキーボードやディスプレイと対話するためのデバイスという、より伝統的な意味を持つこともできます。たとえば、X端末は一種のシンクライアントであり、キーボード、ディスプレイ、マウス、および場合によっては他の人間とのやり取りの周辺機器を駆動し、実際のアプリケーションを別のより強力なコンピューターで実行することを唯一の目的とする専用コンピューターです。
コンソールは、一般的にいくつかの定義によって直接コンピュータに接続された一次端子である物理的な意味で端末です。コンソールは(カーネル実装)ttyとしてオペレーティングシステムに表示されます。LinuxやFreeBSDなどの一部のシステムでは、コンソールはいくつかのttyとして表示されます(これらのttyの間で特別なキーの組み合わせが切り替わります)。問題を混乱させるために、特定の各ttyに付けられる名前は、「コンソール」、「仮想コンソール」、「仮想端末」、およびその他のバリエーションです。
「仮想端末が「仮想」である理由、および「実際の」端末は何/なぜ/どこにあるのかも参照してください。。
シェルは、その主な目的の他のプログラムを開始するユーザーがログイン時に参照主要なインターフェイスです。(元の比phorがシェルがユーザーのホーム環境であるかどうか、またはシェルが他のプログラムが実行されているものであるかどうかはわかりません。)
UNIXサークルでは、シェルはコマンドラインシェルを意味するように特化されており、起動したいアプリケーションの名前を入力し、その後にアプリケーションが動作するファイルまたは他のオブジェクトの名前を入力し、Enterキーを押します。他のタイプの環境では、「シェル」という言葉は使用されません。たとえば、ウィンドウシステムには、「シェル」ではなく「ウィンドウマネージャ」と「デスクトップ環境」が含まれます。
多くの異なるUNIXシェルがあります。インタラクティブに使用するための一般的なシェルには、Bash(ほとんどのLinuxインストールのデフォルト)、zsh(パワーとカスタマイズ性を重視)、およびfish(シンプルさを重視)が含まれます。
コマンドラインシェルには、コマンドを組み合わせるためのフロー制御構造が含まれています。対話型プロンプトでコマンドを入力することに加えて、ユーザーはスクリプトを作成できます。最も一般的なシェルには、Bourne_shellに基づいた共通の構文があります。「シェルプログラミング」について説明するとき、シェルはほとんど常にBourneスタイルのシェルであると暗示されています。スクリプトの作成によく使用されるが、高度なインタラクティブ機能を欠くシェルには、Kornシェル(ksh)や多くのashバリアントが含まれます。ほとんどのUnixライクなシステムには/bin/sh
、通常ash、ksh、またはbash としてBourneスタイルのシェルがインストールされています。
UNIXシステム管理では、ユーザーのシェルはログイン時に呼び出されるプログラムです。通常のユーザーアカウントにはコマンドラインシェルがありますが、アクセスが制限されているユーザーには、シェルまたはその他の特定のコマンドが制限されています-アカウントのみ)。
ターミナルとシェル間の分業は完全には明らかではありません。主なタスクは次のとおりです。
\e[D
)。シェルは、制御シーケンスをコマンドに変換します(例:\e[D
→ backward-char
)。M-x shell
Emacsです。foo
」、「前景色を緑に切り替える」、「カーソルを次の行に移動する」などの指示を出します。端末はこれらの指示に基づいて動作します。printk
十分な優先順位(カーネルパニックなど)が発生する場所です。console=DEVICE,...
カーネルコマンドラインを渡すことで設定されます(たとえば、console=ttyS0,115200
最初のシリアルポートの場合、115,200 bps)。通常、デフォルトは仮想端末ですが、カーネルのコンパイル時に変更できます。
端末またはコンソールは、ユーザーがホストと相互作用することができる使用して、ハードウェアの一部です。基本的に、テキスト画面と結合されたキーボード。
今日では、ほぼすべての端末とコンソールが「仮想」端末とコンソールを表しています。
端末を表すファイルは、伝統的にttyファイルと呼ばれます。UNIXシステムの「/ dev」ディレクトリの下を見ると、仮想コンソール(Linuxのtty1など)、仮想端末(pts / 0など)、または物理的に接続されているハードウェア(ttyS0など)に接続されたttyファイルがたくさんあります。ホストの最初のシリアルポートに接続されている物理シリアル端末(ある場合)。
コンソールは、ハードウェアに物理的に接続されている(またはその一部)ホストの一部でなければなりません。システムには特別な役割があります:メンテナンスのためにシステムにアクセスする主要なポイントであり、コンソールからのみ実行できる特別な操作もあります(例を参照single user mode
)。端末がよく、通常、ハードウェアの遠隔部分であることができます。
最後になりましたが、シェルは、制御ttyを介してユーザーと対話し、ユーザーに他のプログラム(bash、csh、tcshなど)を起動する方法を提供する特別なプログラムです。
端末エミュレータは、物理的な端末(例えばxtermの、GNOME末端、minicomの)をエミュレートするプログラムです。
だから、あなたがしようとしている(X11下)Linuxシステム上で、「テキストウィンドウ」に目を向けるとき:端末エミュレータに接続し、仮想端末で識別される、のtty実行される内部のファイル、シェルを。
tty
KDEのKonsoleなどのターミナルエミュレータでコマンドを実行すると、出力は/ dev / pts / 0になります。
/dev/pts/0
はttyファイルであり、カーネルによって公開されるプログラムインターフェイスのハンドラーです。このハンドラーを介して、プログラム(シェルなど)は端末(実または仮想)と対話できます。端末エミュレーターは、端末をエミュレートするソフトウェアです。エミュレーターはカーネルに、プログラムが自身と対話できるようにするハンドラーを作成するように要求します(を参照man openpty
)。そのため、情報は端末(エミュレータ)からカーネルttyハンドラー、プログラム(およびその逆)に流れます。プログラムと端末は互いに直接対話せず、ttyファイル(ハンドラー)を介してのみ対話します。
短い説明:
コンソールは端末です。システムには1つのコンソールと潜在的に複数の端末があります。コンソールは通常、起動中など、コンピューターを管理するための主要なインターフェイスです。
ターミナルは、コマンドラインプログラムの入出力を送受信できるセッションです。コンソールはこれらの特殊なケースです。
TTYは本質的には擬似デバイスであり、カーネルリソースと呼ばれ、特定の端末にアクセスするプロセスによって使用されます。TTYは、シリアルポートなどのハードウェアに結び付けることも、仮想(たとえば、ユーザーがネットワーク経由でログインしたときに作成される)にすることもできます。
シェルは、プログラムの制御と実行に使用されるプログラムです。多くの場合、ターミナルを介してインタラクティブに使用されます。いくつかのシェルプログラムが存在しますが、Bashはおそらく今日最も一般的に使用されているシェルです。他のシェルには、順不同で、Bourne Shell、C-shell、Dash、Tsch、Ksh、およびますます普及しているzshが含まれます。他にもたくさんあります。
GUIを使用している場合、ターミナルプログラムを使用して、ターミナルセッションのサイズ変更可能な境界線を描画したり、スクロールバーを追加したり、テキストをフォーマットしたりできます。多くの場合、これらはターミナルエミュレータと呼ばれ、TABコンセプトを介して複数のセッションを処理できる場合があります。ターミナルエミュレーターは、シェルを起動してコマンドラインで対話的に作業できるようにします。
すでに2つの優れた答えがありますが、「仮想端末」というフレーズに関する情報を追加したいと思います。一般的に、それは端末の外観/機能を提供するものを意味します。e。端末エミュレータ広い意味インチ しかし、Linuxの初期(1994〜95年)は、一部の開発者によって「仮想コンソール」(いくつかの無関係なユーザーインターフェイス)と同義的に使用されていました。この使用法はドキュメントに残ります。tty1、tty2…という意味で、2つの異なる用語が使用されていました。現在(およそ1996年以降)、「仮想端末」はptyベースの端末エミュレータを指す場合もあります。
Linux vt
(テキストモードシステムコンソールのドライバー)は、カーネルの最初の部分でした。当初はメインフレームへの接続に使用されていましたが、この意味では「仮想端末」であり、そのため名前が付けられています。仮想コンソールを制御するコードも存在しvt.c
ます。Linuxカーネルエンジニアは、常に「コンソール」という言葉を使用してtty1、tty2…を表し、「vc_」プレフィックスを使用しました。たとえば、vc_allocate
関数があります。一方、このようなユーザ空間のツールの開発kbd
とconsole-tools
使用される「バーチャルコンソール」(VC)と同義的に「仮想端末」(VT)。And Andries E. Brouwerに連絡初期の開発者が使用した用語を明確にするように彼に依頼しました(1994–95)。アンドリーズは親切にいくつかの答えを提供してくれました。彼は、VTとVCは同義語であり、「分割できない」略語であると述べています。->一般に、仮想コンソールは仮想端末ですが、その逆は当てはまりません。仮想コンソールではない「仮想端末」は、実際には疑似端末です(Andriesが述べているように、これらはVTではありません)。カーネルがコンソールアプリケーションに端末機能を提供する仮想コンソールとは異なり、擬似端末はPTY「デバイス」を使用して、コンソールアプリケーションとユーザースペースで実行される端末作成プログラム間の通信を調整します。例としては、Xベースのターミナルエミュレーターとsshd
、各ログインセッションにpseudottyを割り当てます。疑似端末は「コンソール」と呼ばれない場合がありますが、これは間違いです。
端末=シェルセッションへの入力用の出力とキーボードを表示するインターフェイス。
シェル=文字列として入力されたコマンドを実行するインタープリター
コンソール:実際に使用している2種類のコンソール
物理コンソール=システムとの対話に使用されるハードウェアディスプレイとキーボード
仮想コンソール=それぞれが独立したログインセッションをサポートできる複数の論理コンソールの1つ。
tty(テレタイプ、つまり端末)。=ターミナルは、基本的にはinput.output.messageにテキストを使用する単なるユーザーインターフェイスデバイスです。
歴史に飛び込む必要があります。
紙とキーボードを備えたタイプライターのようなデバイスがありました。これらは、テレタイプ(「テレ」は「リモート」を意味するため、「リモートタイプ」を意味する)または略してttyと呼ばれていました。70年代には、ガラスttyと呼ばれるCRTモニターを備えたデバイスによって廃止されました。
どのコンピューターでも、その状況とエラーを報告する(そして、おそらくコマンドを受け入れる)方法が必要です。ほとんどの場合、コンピューターに直接接続されているコンソールを介して行われます。そのため、コンソールには2つの意味があります。ステータスを報告するために使用されるものと、直接接続されるものです。
UNIXは対話型システムです。複数のユーザーがそれに接続し、アプリケーションを起動できます。そのために最初のコンピューターはテレタイプ(tty)を使用しました。各ユーザーはシリアルライン接続でマシンにテレタイプを接続していました。このようなテレタイプはターミナルと呼ばれます。UNIXはまた呼ばれる「端末の後ろに座って、ユーザー」処理するための特別なサブシステムましたtty第1の端子がテレタイプであったために。各プロセスは、Unixのttyに接続できます。つまり、端末の近くにユーザーが座っています。詳細については、http://www.linusakesson.net/programming/tty/を参照してください。
ユーザーは、カーネルにアプリケーションを実行するよう指示する方法が必要です。そのためにシェル(sh、bash、csh、kshなど)が使用されます。シェルはttyで実行され、ユーザーからのコマンドを受け入れて、カーネルにアプリの実行を要求します。
ただし、端末は常に物理的にマシンに接続されているわけではありません。ユーザーからのキーストロークを受け入れてどこかに送信する端末を「エミュレート」するアプリケーションがあるかもしれません(xtermとsshは良い例です)。そのための擬似端末と呼ばれるAPIがカーネルにあります。したがって、ttyは実際の端末ではなく、実際に何らかのアプリケーションに接続されている可能性があります。XtermはX11を使用してテキストを表示し、sshはネットワーク接続を使用します。
IBM PCにはキーボードとビデオカードがあります(コンソールとも呼ばれます)。Linuxはさまざまなことを実行できます。
また、コンソール上の端末のエミュレートを停止し、それを何らかのアプリに提供する場合があります。アプリはビデオモードを切り替えて排他的に使用できます(X11またはsvgalibがそれを行う場合があります)。
したがって、ここに現代的な意味があります:
/dev/console
)またはコンピューターに接続された物理キーボードとビデオディスプレイ。ここに短い答えがあります-
カーネル -実際のハードウェアと直接通信する最新のオペレーティングシステムの最も内側の部分。
シェル -実際のカーネルのラッパー。コマンドを実行するたびに、実際にシェルと通信し、シェルが適切なカーネル命令を呼び出します。これとは別に、シェルは、コマンド、ファイル名の短縮、コマンドのパイピングなどを行いながら適切なプログラムを見つけるなど、他の処理を実行できます。
ターミナル -以前のコンピューティングの時代、コンピューター(メインフレームとして知られている)は巨大でした。そのため、単一の処理ユニットを持ち、多くの場所から接続するのは簡単でした。ターミナルは、キーボードと出力デバイスがメインフレームに接続されている実際のハードウェアです。
コンソール -OS管理の目的でメインフレームに直接接続されている特別なタイプの端末。
TTY -へとメインフレームとの間でデータを送受信するために使用さテレックス。ビデオ端末が利用可能になる前に使用されていました。しかし、従来はまだttyと呼ばれていました。クーマンでもstty
長く詳細な答えはこちら- ターミナル、コンソール、シェル、カーネル、コマンド-コンピューターのさまざまな部分
root
アカウントへのアクセスを許可するようにシステムを設定しsudo
ています。コンソールには、特別な場所の特権があります。コンソールにアクセスできる人は、通信するコンピューターに物理的にアクセスできる必要があるためです。また、最終手段のアクセス方法でもあります。OSが部分的に壊れた状態(イーサネットドライバーが壊れているなど)の場合でも、コンソールにアクセスできます。それは常に利用可能であるべきである1つのヒューマンインタフェースデバイスの、どんな状態のシステムはではありません。
受け入れられた答えとThe TTYの分かりやすい記事を別にすれば、私はこれら2つの記事を読むのが大好きでした。
これはNetBSDに基づいています。
Unixの石器時代には、コンピューターシステムはメインフレーム、メモリ、大容量記憶装置、コンピューティングユニットがあり、ユーザーまたはオペレーターによって開始されたプロセスを実行する点滅ライトの大きな箱で構成されていました。ハードウェアは非常に高価だったため、システムは真のマルチユーザーシステムとして使用され、多くの人が同時にシステムとやり取りしていました。通常は持っていなかったもの-今日のUnixワークステーションとは異なり-は固定モニターとキーボードでした。代わりに、マシンにコマンドを発行し、出力を取得するために、最初にテレタイパーを使用し、後でCRT(陰極線管)ターミナルを使用して、シリアル回線で行いました。テレタイパー(Unixの「tty」の由来)は、シリアルラインを介して押されたキーをホストに送信する電子タイプライターです。
これはLinuxに基づいています。
ターミナルは、通常のファイル、パイプ、およびソケットだけで達成できる以上の拡張入出力機能を提供するデバイスです。これらの機能は、人間がコンピューターとやり取りしやすくするように設計されており、互いに通信しようとするプログラムには役に立たない。
これにひびを入れてみましょう...私はこれで多かれ少なかれUnixとLinuxを使用します。Linuxが存在する以前の歴史的なものに言及する場合は、通常「Unix」と記述し、最近のこと、またはLinuxフレーバーのUnix特有の何かについて話す場合は、通常「Linux 「。
リスト内で、他と重複しない個別の概念である唯一のものは、「シェル」です。シェルは、ユーザーと通信し、ユーザーに代わってオペレーティングシステムの操作を実行することを目的とするプログラムです。
最も一般的なシェルは、ユーザーに何らかのプロンプトを送信し、ユーザーがテキストコマンドを入力するのを待ってから、そのコマンドを実行する「コマンドライン」と呼ばれる手法を使用します。しかし、メニューベースのシェルや、グラフィカルなシェル(Windowsファイルエクスプローラーなど)もありますが、自尊心のあるUnixの人はそのようなものを「シェル」と呼ぶことはありません。
Unixでは、誰かが何かを「シェル」と呼ぶ場合、それらは私が今説明したような何らかの形のコマンドラインインターフェースをほぼ確実に意味します。また、Unixの世界では、これから説明するttyモデルを使用してユーザーと通信していない場合、何かを「シェル」と呼ぶのは非常に奇妙です。
これは、いくつかの異なる種類のものを参照できるため、混乱を招くものです。
Linuxには、「tty」と呼ばれる種類のデバイスがあります。これは、ユーザーであるか、何らかの方法でユーザーからの入力を受け取るものとの双方向通信に使用されることが期待される抽象的なデバイスです。時には、その抽象的なデバイスが何らかの物理デバイスに直接対応する場合があります。コミュニケーションが表示され、ユーザーが入力できるウィンドウを誰かに提示しているプログラムである場合があります。
しかし、この抽象的なデバイスが存在し、「tty」と呼ばれる理由は、「tty」は「teletype」の略語であるためです。抽象「tty」デバイスがそれを使用しているプログラムに提示するモデルは、基本的に反対側にテレタイプがあるということです。キャラクターを送信すると、それらのキャラクターがテレタイプに表示されます。それから文字を読むとき、それらの文字はキーボードで入力されたキーを表します。
古いペーパープリンターベースのttyは、すぐにビデオttyに取って代わりました。もちろん、ロール紙はありません。実際、画面上の任意の文字を上書きする可能性があります。しかし、プログラムに何らかの抽象的な「スクリーン」インターフェースを提示するのではなく、プログラムは、代わりに、さまざまなタスクを実行するエスケープシーケンスと呼ばれる文字の特別なストリームを送信することが期待されています。通常、画面上を移動できる「カーソル」と呼ばれる抽象的なものがあり、送信された文字はカーソルにあるものを置き換え、カーソルはさらに1文字移動します。多くの場合、エスケープシーケンスで印刷しようとしている文字の色も変更できます。
このモデルに従わない「ガラスtty」があり、その結果、Unixの世界ではうまく処理されません。ビデオ端末のIBM 3270ファミリは、このカテゴリに分類されます。
Linux / Unixの人々が一般的に「シェルウィンドウ」と呼ぶものは、グラフィカルユーザーインターフェイスを使用したGlass TTYのエミュレーションです。内部的には、シェルウィンドウ内で実行されているプログラムは、仮想ttyデバイスと通信しています。仮想ttyデバイスは、疑似ttyまたは疑似端末(別名pty)と呼ばれることもあります。
端末は、コンピューターと人間がインターフェイスする場所にすぎません。ターミナルは完全にグラフィカルであり、プログラムがこれをエミュレートするためにその機能を使用する場合でも、どのような方法でもttyモデルに従わない場合があります。実際の物理tty(ガラスなど)はすべて端末です。
コンソールは、オペレーティングシステムが実行されているハードウェアに直接安全な方法で接続されることが一般的に想定されている特別な種類の端末です。
Linuxでは、コンソールは特別なキーストロークを使用して仮想コンソールを切り替えることができる小さな方法で仮想化されます。しかし、この仮想化は、カーネル内のソフトウェアによって実際のハードウェアで行われます。
「シリアルコンソール」と呼ばれるものを介してLinuxを使用する方法があります。これは、USBポートなどのシリアルポート(または、非常に小さなコンピューターや非常に古いコンピューターではRS-232ポート)を介してコンピューターに接続されるコンソールですある種の)であり、かなり厳密な方法で古いテレタイプモデルに従います。
繰り返しになりますが、このコンソールは、だれでも接続できるようなネットワークを介してではなく、直接物理的な方法でコンピューターに接続されます。