これらの用語は、大まかに使用するとほぼ同じことを指していると思います:
- ターミナル
- シェル
- tty
- コンソール
これらの各用語は正確には何を指しますか?
承認された回答:
端子は電線の端にあり、シェルはカメの家であり、ttyは奇妙な略語であり、コンソールは一種のキャビネットです。
とにかく、語源的に言えば。
UNIXの用語では、簡単な答えはそれです
- terminal =tty=テキスト入力/出力環境
- コンソール=物理端末
- shell=コマンドラインインタープリター
コンソール、ターミナル、およびttyは密接に関連しています。もともと、それらはコンピュータと対話できる機器を意味していました。UNIXの初期には、タイプライターに似たテレプリンタースタイルのデバイス(テレタイプライターまたは略して「tty」と呼ばれることもあります)を意味していました。 「ターミナル」という名前は電子的な観点から、「コンソール」という名前は家具の観点から付けられました。 UNIXの歴史の非常に早い段階で、電子キーボードとディスプレイが端末の標準になりました。
UNIXの用語では、 tty は、読み取りと書き込み以外の多くの追加コマンド(ioctl)を実装する特定の種類のデバイスファイルです。最も一般的な意味では、ターミナル ttyと同義です。一部のttyは、ハードウェアデバイスに代わってカーネルによって提供されます。たとえば、キーボードからの入力とテキストモード画面への出力、またはシリアル回線を介した入力と出力が提供されます。 疑似ttysと呼ばれることもある他のtty 、ターミナルエミュレータと呼ばれるプログラムによって(薄いカーネル層を介して)提供されます 、Xterm(X Window Systemで実行)、Screen(プログラムと別の端末間の分離のレイヤーを提供)、Ssh(あるマシンの端末を別のマシンのプログラムに接続する)、Expect(スクリプト端末の場合)など相互作用)など。
ターミナルという言葉は、コンピューター、通常はキーボードとディスプレイと対話するためのデバイスのより伝統的な意味を持つこともできます。たとえば、X端末は一種のシンクライアントであり、その唯一の目的はキーボード、ディスプレイ、マウス、場合によっては他の人間との対話周辺機器を駆動することであり、実際のアプリケーションは別のより強力なコンピュータで実行されます。
コンソール 一般に、物理的な意味での端末であり、ある定義では、マシンに直接接続されているプライマリ端末です。コンソールは、オペレーティングシステムには(カーネルで実装された)ttyとして表示されます。 LinuxやFreeBSDなどの一部のシステムでは、コンソールはいくつかのttyとして表示されます(特別なキーの組み合わせはこれらのttyを切り替えます)。問題を混乱させるために、各特定のttyに付けられた名前は、「コンソール」、「仮想コンソール」、「仮想端末」、およびその他のバリエーションにすることができます。
シェル は、ユーザーがログインしたときに表示される主要なインターフェイスであり、その主な目的は他のプログラムを起動することです。 (元のメタファーが、シェルがユーザーのホーム環境であるのか、それとも他のプログラムが実行されているシェルであるのかはわかりません。)
関連:Centos – CentOS 7にデスクトップ環境をインストールする方法は?UNIXサークルでは、シェル は、コマンドラインシェルを意味することに特化しており、起動するアプリケーションの名前を入力し、続いてアプリケーションが動作するファイルまたはその他のオブジェクトの名前を入力し、Enterキーを押します。他のタイプの環境では、「シェル」という言葉は使用されません。たとえば、ウィンドウシステムには、「シェル」ではなく「ウィンドウマネージャー」と「デスクトップ環境」が含まれます。
さまざまなUNIXシェルがあります。
インタラクティブに使用する人気のあるシェルには、Bash(ほとんどのLinuxインストールのデフォルト)、zsh(パワーとカスタマイズ性を強調)、fish(シンプルさを強調)があります。
コマンドラインシェルには、コマンドを組み合わせるためのフロー制御構造が含まれています。インタラクティブなプロンプトでコマンドを入力することに加えて、ユーザーはスクリプトを書くことができます。最も一般的なシェルには、Bourne_shellに基づく一般的な構文があります。 「シェルプログラミング」について話し合うとき 」、シェルはほとんどの場合、ボーンスタイルのシェルであると暗示されています。スクリプトによく使用されるが、高度なインタラクティブ機能がないシェルには、Kornシェル(ksh)や多くのashバリアントが含まれます。ほとんどすべてのUnixライクなシステムには、/bin/sh
としてインストールされたBourneスタイルのシェルがあります。 、通常はash、ksh、またはbashです。
UNIXシステム管理では、ユーザーのシェル は、ログイン時に呼び出されるプログラムです。通常のユーザーアカウントにはコマンドラインシェルがありますが、アクセスが制限されているユーザーには、シェルまたはその他の特定のコマンドが制限されている場合があります(ファイル転送専用アカウントなど)。
>ターミナルとシェルの間の分業は完全には明らかではありません。主なタスクは次のとおりです。
- 入力:端末はキーを制御シーケンスに変換します(例:左 →
e[D
)。シェルは制御シーケンスをコマンドに変換します(例:e[D
→backward-char
。 - 行の編集、入力履歴、および完了はシェルによって提供されます。
- 端末は、代わりに独自の行編集、履歴、および完了を提供し、実行の準備ができたときにのみ行をシェルに送信する場合があります。このように動作する唯一の一般的な端末は、
M-x shell
です。 Emacsで。
- 端末は、代わりに独自の行編集、履歴、および完了を提供し、実行の準備ができたときにのみ行をシェルに送信する場合があります。このように動作する唯一の一般的な端末は、
- 出力:シェルは「display
foo
」などの命令を出力します 」、「前景色を緑に切り替える」、「カーソルを次の行に移動する」など。端末はこれらの指示に従って動作します。 - プロンプトは純粋にシェルの概念です。
- シェルは、実行するコマンドの出力を確認しません(リダイレクトされない限り)。出力履歴(スクロールバック)は、純粋に最終的な概念です。
- アプリケーション間のコピーと貼り付けは、端末によって提供されます(通常、マウスまたは Ctrl などのキーシーケンスを使用します)。 +シフト + V またはShift +挿入 )。シェルには、独自の内部コピー貼り付けメカニズムもある場合があります(例:メタ + W およびCtrl + Y 。
- ジョブ制御(バックグラウンドでプログラムを起動して管理する)は、ほとんどがシェルによって実行されます。ただし、 Ctrlのようなキーの組み合わせを処理するのは端末です + C フォアグラウンドジョブとCtrlを強制終了します + Z 一時停止します。