ターミナルエミュレータとその中で実行されているシェルが異なる用語タイプを使用している場合、どのような「悪い」ことが起こりますか(そしてなぜ)?

ターミナルエミュレータとその中で実行されているシェルが異なる用語タイプを使用している場合、どのような「悪い」ことが起こりますか(そしてなぜ)?

たとえば、PuTTY設定では端末タイプをに設定しましたが、SSHログイン後にxterm-256colorシェルで変更しました。export TERM=linux

私はそれがほとんどの場合うまく動作することを知っています。 PuTTYとリモートシェルの間の矛盾が実際に技術的な観点から何を意味するのかを理解しようとしています。

ベストアンサー1

このTERM変数は、ターミナル/エミュレータの機能と色の変更、カーソルの移動、または画面の消去などのターミナル制御機能のために送信する正しいコードを見つけるために使用されます。

理論的には、TERMこの変数によって識別される端末タイプは、/usr/share/terminfo/ディレクトリツリーの端末タイプ記述によって正確に記述されます。実際には、ターミナルエミュレータには、その動作がタイプ仕様から外れるようにするバグがあるかもしれません。

(端末の種類仕様自体にもバグがある可能性がありますが、これは非常に古い技術であり、ほとんどのバグはずっと前に解決されました。)

たとえば、端末は母国語で通信します。アプリケーションは通常、これを直接話すことなく使用します。用語情報データベースは辞書/フレーズセットで端末と通信します。 TERM環境変数は、使用する辞書/フレーズを決定します。

TERM値がわずかに間違っている場合(端末タイプが正確ではないが十分に類似していることを示す場合)、berndbauschが質問のコメントで述べたように、機能が低下した場合(たとえば、256色ではなく16色のみを使用)、ほとんどの場合正常です。 。

プログラムが実際の端末タイプに存在しない機能を使用しようとすると、画面に一部のジャンク文字が表示されることがあります。エラーが反対の場合(つまり、端末タイプの説明に端末に実際に存在する機能が含まれていない場合)、プログラムは端末がその機能を使用できないように動作します。

ただし、TERM値が完全に間違っている場合(完全に関連していない端末タイプを示す)、画面の消去やその他の基本機能は使用できず、それを使用しようとすると画面にガベージ文字が生成される可能性があります。これは、プログラム端末エミュレータが実際に認識しない形式で端末制御コードを送信することです。この状態では、TERM値が変更されるまでプレーンテキストエディタ(ClassicexやErrorなどの従来の行中心エディタではない)を使用することは非常に困難または不可能です。ed

TERM値が完全に欠落している場合、それを必要とするほとんどのプログラムはデフォルト値を想定しますdumb。つまり、機能が非常に制限されている非常に古い端末であり、画面の代わりにプリンタがある可能性があります。この場合、ゴミ文字は表示されませんが、プレーンテキストエディタまたは上記の既存のビュー内でテキストベースの全画面表示(ドロップダウンまたはポップアップメニュー)を生成するすべての項目を使用して、完全に無効な用語設定と同じです。端末ウィンドウでは不可能です。

非常に古い端末を使用する例については、YouTube で CuriousMarc の動画をご覧ください。 https://youtu.be/2XLZ4Z8LpEE?t=501

CuriousMarcが変数を直接代入する代わりにこれを設定しtty33ましたが、Linuxで実際に使用できる特定のTERM値があることに注意してください。その価値はそれよりも簡単かもしれません!agettyTERMdumb

このTERMタイプの内容は、タイプ検出メカニズムとして使用できるものが必ずしもない多くの以前の技術を包括するためのものなので、最初は自動ターミナルタイプ検出に対する規定はまったくありませんでした。

getty有線シリアル端末の場合、システム管理者は新しい端末に接続されている各シリアルポートのプロセスを追加するときに正しい端末タイプを設定する必要があります。モデム回線の場合、システムは次のように構成できます。ユーザーに尋ねる正しい端末タイプを見つけるには、検出さ/etc/profileれたセッションが非対話型セッションでない限り、inまたは類似のものを入力してください。

端末タイプの自動検出にはいくつかの進歩がありましたが、これらの開発はすべての場合に適用されるわけではありません(従来の端末タイプが多すぎるため)。したがって、自動検出は、管理者が見なした場合に有効にできる選択機能のままです。必要。彼らにはそれほど価値があります。

後でネットワークプロトコルベースのリモートアクセス方法が開発されたときに追加された機能の1つは、接続時にクライアントからリモートホストにいくつかの追加情報を自動的に転送する機能でした。これらのうち、TERM値は最初のものです。 「誰もが幸せだ」

おすすめ記事