このドキュメント によると:
環境変数TERMには、テキストウィンドウの機能の識別子が含まれています。 「man 5 terminfo」を参照として使用する「infocmp」コマンドを使用すると、これらの機能の詳細なリストを取得できます。
しかし、TERM
変数は実際にどのように使用されますか?システムがxterm
(Xウィンドウシステムのターミナルエミュレーター)を実行するとします。 xterm
はTERM
変数を使用していますか、それともシェルですか?もしそうなら、どうですか? xterm
がTERM
に設定されている場合、linux
は機能しなくなりますか?
また、TERM
をデフォルト値のxterm-256color
からxterm
のようなものに変更しても、カラー出力が無効にならないのはなぜですか?
TERM
変数は、ターミナルで実行されているプログラムによって使用されます。これは、プログラムが出力を処理している端末(またはエミュレーター)の機能を判別できるようにするためのものです。 the ncurses
manpage に記載されています。
xterm
などのエミュレータを含む端末自体は、TERM
の値を気にしないで、設定するだけです(エミュレータの場合、物理端末は設定できません)。特定の出力シーケンスを処理する方法を知っており、TERM
やその他の内部状態を気にすることなく処理します。ターミナルの動作を変更せずに、TERM
をシェルで好きなように設定したり、設定を解除したりすることもできます。まず、ターミナルはTERM
が何に設定されているかを認識していません。
TERM
を気にするプログラムは、通常、 ncurses などの気になる出力ライブラリを使用するプログラム、またはより基本的な形式 Termcap または Terminfo これには、BashやZshなどのシェルが含まれます。これらのシェルは、たとえば、行編集機能(履歴を上下に移動すると行を消去できる)にterminfoを使用します。これらは、TERM
の値を機能のデータベースにマップします。これは、端末が特定のタスク(カーソルの移動、画面のクリア、色の変更など)を実行できるかどうか、およびその方法をプログラムまたはライブラリに通知します。 GNU grep
、 などの一部のプログラムは、チェックすることなく機能 を引き受けます。
TERM
をxterm-256color
からxterm
に変更しても、それほど大きな変化はありません。特に、TERM
を参照するプログラムのカラーサポートは無効になりません:xterm
はカラー出力もサポートしています。違いは、サポートされる色の数です。
キーボード入力とテキスト出力はどのように機能するのですか? 、 マニュアルページの色 、 どの端末タイプを使用していますか? 、 端末が使用するプロトコル/標準は何ですか? 詳細については。
私はnCursesプログラム(およびlibtinfoプログラム)のlotがTERMに関心があると思います。
たとえば、htop
は、TERM=xterm
の場合に「部分的に上書きされた」行を表示することがよくありますが、TERM=xterm-color
の場合はすべて問題ありません。
私の経験から、libtinfoを使用しない(直接または間接的に、たとえばnCursesを介して)プログラムは、通常、TERMをまったく気にせず、色やカーソルの配置などのサポートを想定しています。