Linux

適合串列控制台的 TERM 變數值

  • April 9, 2018

要在 Linux 上啟用串列控制台,可以使用getty(最常見的是它的變體agetty)。該二進製文件將初始化TERM變數的值作為參數。

在 Debian 上,使用 Sys V init,預設值為 vt100。使用 systemd,預設值曾經是vt102,現在是vt220

在玩了一點 QEMU 虛擬機和virt-viewer命令virsh console之後,我注意到了一些事情:

  • 使用vt100ls --color顯示顏色,但vim語法高亮不起作用
  • 使用vt102vt220,它們都不顯示顏色
  • 僅將TERM變數設置為linux,同時ls使用vim顏色

所以我猜想獨立於實際的“顏色支持”,每個應用程序都會查看TERM變數並相應地採取行動,這將解釋上述差異。

閱讀Serial Console HOWTO後,我了解到TERM變數的值應取決於將連接到串列埠的物理終端的實際型號,具體取決於其功能。

請注意,根據Lennart Poettering 的部落格TERM應該設置為linux,只有真正的虛擬終端(而不是串列終端)。另一方面,Arch Linux 的 Wiki似乎並不介意(請參閱/etc/inittab它建議的行)。

所以我的問題是:

在一般情況下,如果TERM變數在連接到功能較弱的終端(如 DEC VT100、VT102 或 VT220)或某些 RS-232 軟體終端仿真器(如或)的控制台上設置為linux會發生什麼?minicom``termite

更實際地(在我的特定情況下),是否可以在 QEMU VM 上的“虛擬”串列控制台中將TERM變數設置為linux,我將通過virt-viewer或連接到該控制台virsh console

TERM設置告訴應用程序與之通信的終端具有哪些功能,以及如何利用這些功能(通常通過像 ncurses 這樣的庫)。用簡單的英語:它告訴它應該發送什麼控制序列(轉義序列)以在螢幕上移動游標、更改文本顏色、如何擦除螢幕區域、功能鍵傳輸什麼序列等。可能缺少這些功能,例如顏色支持。

今天使用的大多數終端類型都與“玻璃 ttys”的“祖父”DEC VT100 有關。這就是為什麼終端類型大多是可互換的,因此設置錯誤的類型通常會導致大部分工作設置,但會出現一些故障。

那麼,要回答“我應該使用哪個”和“如果我使用錯誤的設置會發生什麼”的問題呢?某些控制序列可能不匹配,即程序發送的游標移動序列與終端仿真器期望的不同。或者缺少顏色支持。(順便說一句。原來的 VT100 肯定不支持顏色…)正確的設置應該由終端仿真器文件提供,但是嘗試看看哪種設置效果最好並沒有什麼壞處。如果它適合您,可以使用“linux”。

引用自:https://unix.stackexchange.com/questions/436632