$TERM 的正确性有多重要?

Bri*_*ick 6 terminal-emulator terminal environment-variables

我最近从rxvt-unicode切换到st。这意味着我从$TERM=rxvt-unicode-256color$TERM=st-256color.

我对切换很满意,并希望继续使用st. 但是,我注意到某些终端应用程序对新$TERM值不满意。例如,除非我“欺骗”它认为它是可识别的东西,emacs否则不会加载st全彩色支持。$TERM$TERM=xterm-256color

我的问题是:简单设置的风险是什么$TERM=xterm-256color?在我看来,重要的部分$TERM=*-256color256color部分,而 的价值*似乎不那么重要。

Jde*_*eBP 14

值的重要部分TERM是它匹配 terminfo 或 termcap 数据库中的条目,并且该条目正确地描述了您的终端。

你不能合理地告诉软件你的终端是 XTerm,而它公然不是。认为其他终端仿真器使用所有与 XTerm 相同的输入/输出控制序列或提供所有相同的功能是完全错误的。

-256color只是名称的一部分,它对大多数软件没有内在意义(尽管很少有人会寻找功能后缀)。它(主要)只对人类有意义,因为是人类按名称将 terminfo/termcap 数据库中的条目分组为家庭。终端类型名称中的功能后缀主要用于人类,而不是软件。

对软件有意义的是数据库的记录是否表明该终端支持 256 色,并提供在该类型终端上使用它们的控制序列。

也就是说,emacs 做自己的事情,而不是简单地依赖 terminfo/termcap 数据库。例如,已知其frame-set-background-mode功能的值一致TERM反对^\\(xterm\\|\\rxvt\\|dtterm\\|eterm\\),这可能是错误的时下。这里正确的做法是修复的Emacs,这样,最后,它可以正确识别的st-256color终端类型(和putty-256colorvte-256color和其他)。

进一步阅读