tmux が TERM 変数を screen に設定するのはなぜですか?

tmux が TERM 変数を screen に設定するのはなぜですか?

引用元のtmuxman ページ:

tmux 内で実行されるすべてのプログラムでは、TERM 環境変数を「screen」に設定する必要があります。新しいウィンドウには自動的に「TERM=screen」が環境に追加されますが、シェルの起動ファイルでこれをリセットしないように注意する必要があります。

これは、tmuxセッションが任意の端末 (リモートなど) に接続でき、screen最小公分母となるためでしょうか? 端末がわかっている場合、予期しない結果を招くことなく強制できますか、それともサポートされていない機能 (スクロールなど) が機能しなくなりますか?

答え1

これは、GNU screen 用に以前にインストールされた端末記述を活用するために行われます。

両方tmuxそして画面異なる端末からの接続を簡素化するために、アプリケーションに (多かれ少なかれ) 「同じ」端末記述を提供します。tmux および screen プログラムは、内部 (TERM=screen) と外部 (xterm、linux など) の違いを処理することになっています。そのため、screen端末記述は「どこにでも」インストールされています (通常は ncurses によって)。

いくつかの違いがあります:

  • GNUスクリーンには非常に古い問題「目立つ」機能(技術的には特定の端末機能ではなく、cursesアプリケーションの利便性のための抽象化)を表す。tmuxにはその制限はありません。しかし、改善されたTERM=tmux必ずしも「どこにでもある」というわけではありません。
  • GNU screen にはハイブリッド端末記述を使用する機能があります。外部 TERM=xterm と "screen.xterm" が存在する場合、内部 TERM 値としてそれを選択します。(例:端末データベース)。tmux はそれを行いません。

答え2

現在tmux 2.1、あなたはtmux 用語情報:

'default-terminal' はセッション オプションになりました。さらに、これを 'screen-*' に設定すると、screen の動作をエミュレートします。イタリック体が必要な場合は、これを 'tmux' に設定できますが、これはまだ新しいため、古い ncurses がインストールされているすべてのプラットフォームでサポートされているとは限りません。

関連情報