為什麼 tmux 將 TERM 變數設定為螢幕?

為什麼 tmux 將 TERM 變數設定為螢幕?

引用tmux手冊頁:

對於 tmux 內運行的所有程序,必須將 TERM 環境變數設定為「screen」。新視窗將自動將“TERM=screen”新增至其環境中,但必須注意不要在 shell 啟動檔案中重置它。

這是因為tmux會話可以附加到任何終端(例如遠端),screen這是最低公分母嗎?如果我知道我的終端,我可以強制它而不會出現意外結果,或者某些不支援的功能會中斷(例如滾動)嗎?

答案1

這樣做是為了利用先前安裝的 GNU 螢幕終端描述。

兩個都多路復用器螢幕為應用程式提供(或多或少)「相同」的終端描述,以簡化來自不同終端的連接。 tmux 和 screen 程式應該處理內部(TERM=screen)和外部(xterm、linux 等)之間的差異。所以screen終端描述已經被安裝在「任何地方」(通常是由 ncurses)。

有一些區別:

  • GNU 螢幕有一個很老的問題代表「突出」功能(從技術上講,這不是特定的終端功能,而是為了方便 Curses 應用程式而進行的抽象)。 tmux 沒有這個限制。但改進後的術語=tmux不一定是「無所不在」。
  • GNU 螢幕具有使用混合終端描述的功能。鑑於外部 TERM=xterm 且存在“screen.xterm”,它將選擇該值作為內部 TERM 值。 (例如參見終端機資料庫)。 tmux 不這樣做。

答案2

作為多工器2.1,您可以使用tmux 術語訊息:

「預設終端」現在是一個會話選項。此外,如果將其設為“screen-*”,則模擬 screen 的作用。如果需要斜體,可以將其設為“tmux”,但這仍然是新的,不一定在所有安裝較舊 ncurses 的平台上都受支援

相關內容