1970年代には、入出力用のCUI(キャラクターユーザーインターフェース)インターフェースを備えたハードウェアターミナルがありました。
これで、ターミナルエミュレータ(Ctrl+Alt+Fn)Unix/Linuxの世界では。
Ubuntu OSでは、7つのターミナルエミュレータが表示され、GUIが7番目のターミナルエミュレータ(Ctrl+Alt+F7)。
たとえば、これは私の最初のターミナルです(Ctrl+Alt+F1)エミュレータ
$ tty
/dev/tty0
Unix/Linuxが複数の端末エミュレータを提供するのはなぜですか?
UNIX/Linuxが[コンソール上]に複数のターミナルエミュレータを提供するのはなぜですか?
同じ理由で、GUI端末エミュレーターはタブをサポートしている可能性が高く(例:GNOME端末)、サポートしていない場合(例 rxvt
)、同じ理由で2番目のGUI端末アプリインスタンスを起動してもサポートされません。最初のインスタンスをフォアグラウンドにプルして終了するだけではなく、最初のインスタンスを使用する必要があります。
私は仕事で少なくとも3つのターミナルウィンドウを日常的に使用しています。
私が取り組んでいるシステムのサーバー側のテキストエディター
同じシステムのクライアント側のテキストエディター
サーバーを実行するためのコマンドウィンドウ
クライアントプログラムを実行するために4番目の端末が必要になることはめったにありません。それは通常、他の場所(Webアプリ、ネイティブGUIアプリ、モバイルアプリなど)で実行されるためですが、サーバーアプリ用のCLIクライアントを開発している場合、別のターミナルも開いています。
以前は、Sudo
が人気になる前は、root
ターミナルを常に開いたままにしていました。
最近、GUIなしでコンソールで対話的にUnix/Linuxボックスを使用することはほとんどありませんが、ヘッドレスで実行し、SSH経由でアクセスすることがよくあります。選択した私のSSHターミナルクライアントは、上記のように構成されたタブをサポートしています。
私の現在の趣味のプロジェクトの1つ は実際に古い ガラスターミナル を時々使用しています。つまり、複数のターミナルウィンドウがなくなったので、ついに少し学習します- GNU screen
、複数のコンソール端末または複数のGUI端末のどちらかを持っているため、これまであまり使用されなかったプログラム。そして、screen
は何をしますか?特に、Linuxの場合と同様に、単一の画面で 複数の仮想端末を提供するように設定 できます。 Ctrl-Alt-Fバツ。
これは、すべてではないにしても、ほとんどすべてのUnixおよびx86ハードウェアで実行されているようなUnixによって提供される機能です。興味深いことに、仮想コンソールは80年代前半にMicrosoft Xenixによって最初にUnixに導入され、同時CP/Mでも利用可能でした。
この機能は後にAT&T SVR4 Unix、Solarisに統合され、BSDとLinuxによって借用されました。
UNIX/Linuxが複数の端末エミュレータを提供するのはなぜですか?
それらが最初に導入されたとき、これらのUnix実装を実行するマシンで使用できるグラフィック環境はありませんでした。物理端末をRS232回線を介して中央のUnixサーバーに接続するのが標準でしたが、Xenixを実行している標準PCに複数の端末を接続するのが目的で、1人のユーザーが複数の対話型プログラムを同時に実行するだけの場合は、やり過ぎでした。仮想端末は、その問題に対してエレガントで便利なソリューションを提供しました。
他のUnix実装では、後で同じ機能を提供して同じニーズに対応しました。
グラフィック環境、特にX11が広がったとき、同じ画面上で同時に複数の端末エミュレーターを見ることができるようになったことは、大幅な改善でした。しかし、仮想コンソール機能は、グラフィック環境がフリーズしたり、何らかの理由で機能不全になった場合にコンソールに切り替えることができると便利な場合にのみ、一般的に維持されました。
screen
やtmux
のようなユーティリティは、同じ機能を一般化するために仮想端末よりもずっと後になってきたことに注意してください。これらの利点は、ローカルの物理コンソールだけでなく、ローカルまたはリモートのセッション(telnet
、ssh
など)でも使用できることです。物理コンソールで使用する場合、仮想コンソールは、X [11]がフリーズしている場合やウィンドウがキャプチャされている場合など、screen
/tmux
が役に立たない状況で機能するため、依然として有用です。フォーカスとそれを解放しません。
SolarisゾーンやLinux LXCなどのコンテナベースの仮想化も、それぞれzlogin -C zone
およびlxc-console -t 0 -n container
を介してコンテナコンソールに接続する方法を提供します。
他の質問の多くは、機能が導入された理由を答えているようです。
それでも、実際の質問は次のとおりです。
Unix/Linuxが複数の端末エミュレータを提供するのはなぜですか?
「した」ではなく「した」。
現在の時間に焦点を当てて、現在の理由をいくつか示します。
要約すると、これをサポートしない理由はあまりありません。一部の人々には、少なくともある程度は高く評価されるメリットがあり、コストはそれほど高くありません。
実際、removingこれに対するサポートは、サポートをそのままにするよりも多くの作業になる可能性があります。サポートの削除はおそらく簡単ですが、何か問題が発生した場合、問題の特定と修正は少し難しいかもしれません。したがって、必要な労力の削減(オペレーティングシステムの次のバージョンを開発するため)は、物事をそのままにしておくもう1つの理由です。つまり、この機能は引き続き利用できる傾向があります。
ターミナルエミュレーターを追加する理由の1つは、グラフィカルインターフェイスで何か問題が発生して使用できなくなった場合に、すぐにターミナルエミュレーターに切り替えて、グラフィカルインターフェイスで発生しているすべての問題を修正できるためだと思います。これは実際には、ウィンドウマネージャーやグラフィカルインターフェイスの他の機能に変更を加えている場合によく起こります。ターミナルをもう2台用意すると便利だと思いますが、メインのグラフィカルインターフェースの上に6つのオーバートップを設置するのは少し過剰に思えます。
私が間違っている場合も私を修正しますが、単一の端末エミュレータから複数のコマンドを異なるユーザーとして実行することはできませんか?
最初に尋ねたのは、Linuxというカーネルの機能です。一般的なUnixではなく、Gnuではありません。
理由については、著者に尋ねる必要があります。しかし、私の推測では、ネットワーク化されていないデバイス(ここでは一種のネットワークとしてRS232が含まれています)の管理者が、別のユーザーをログアウトせずにログインして管理作業を行うことができます。