适用于串行控制台的 TERM 变量值

适用于串行控制台的 TERM 变量值

要在 Linux 上启用串行控制台,可以使用getty(最常见的是其变体agetty)。该二进制文件将初始化值作为参数等学期变量与.

在 Debian 上,使用 Sys V init,默认值为VT100。对于 systemd,默认值是VT102,现在是VT220

在玩了一下 QEMU 虚拟机和virt-viewer命令之后virsh console,我注意到了一些事情:

  • VT100,ls --color显示颜色,但vim语法高亮不起作用
  • VT102或者VT220,它们都不显示颜色
  • 只有学期变量设置为操作系统,两者都做lsvim使用颜色

所以我猜想独立于实际的“颜色支持”,每个应用程序都会查看学期变量并相应地采取行动,这可以解释上述差异。

读完后串行控制台操作指南,我理解的价值学期变量应取决于将连接到串行端口的物理终端的实际型号,根据其功能。

请注意,根据伦纳特·珀特林的博客,学期应设置为操作系统仅适用于真正的虚拟终端(而不是串行终端)。另一方面,Arch Linux 的 Wiki似乎并不介意(请参阅/etc/inittab它建议的行)。

所以我的问题是:

在一般情况下,如果学期变量设置为操作系统minicom在连接到功能较弱的终端(如 DEC VT100、VT102 或 VT220)或某些 RS-232 软件终端仿真器(如或termite?)的控制台上

更现实的是(在我的具体情况下),可以设置学期变量为操作系统在 QEMU VM 上的“虚拟”串行控制台中,我将通过virt-viewervirsh console?

答案1

TERM设置告诉应用程序与之通信的终端具有哪些功能,以及如何利用这些功能(通常通过 ncurses 等库)。用简单的英语来说:它告诉我们应该发送什么控制序列(转义序列)来在屏幕上移动光标、更改文本颜色、如何删除屏幕区域、功能键发送什么序列等。这些功能可能会缺失,例如颜色支持。

当今使用的大多数终端类型都与“玻璃终端”的“祖父”DEC VT100 有关。这就是为什么终端类型是大多可以互换,因此设置错误的类型通常会导致大部分工作设置正常,但会出现一些故障。

那么,要回答“我应该使用哪个”和“如果我使用错误的设置会发生什么”的问题呢?一些控制序列可能不匹配,即程序发送的光标移动序列与终端仿真器期望的不同。或者缺少颜色支持。 (顺便说一句,原来的 VT100 肯定不支持颜色...)正确的设置应该由终端仿真器文档提供,但是尝试看看哪种设置效果最好是没有坏处的。如果“linux”适合你,就可以使用它。

相关内容