根据这份文件:
环境变量 TERM 包含文本窗口功能的标识符。您可以通过使用“infocmp”命令并使用“man 5 terminfo”作为参考来获得这些能力的详细列表。
但是TERM变量实际上是如何使用的呢?比如说,系统运行xterm(X Window 系统的终端模拟器)。是否xterm使用TERM变量,或者是它的壳呢?如果是这样,如何?将xterm停止工作,如果TERM设置为linux?
另外,为什么不着色输出禁用如果我改变TERM其默认值的xterm-256color别的东西一样xterm?
Ste*_*itt 10
该TERM变量由在终端中运行的程序使用。它应该允许程序确定处理其输出的终端(或模拟器)的功能。据中记录的ncurses联机帮助。
终端本身,包括模拟器,例如xterm,不关心 的值TERM,除了设置它(在模拟器的情况下 - 物理终端不能)。它知道如何处理某些输出序列,并且处理它们,而不关心TERM或除其内部状态之外的任何其他内容。您可以TERM在 shell 中设置任何您喜欢的内容,甚至可以取消设置,而无需更改终端的行为;首先,终端不知道TERM设置了什么!
关心的程序TERM通常是那些使用关心的输出库的程序,例如ncurses,或者更基本的形式 Termcap或Terminfo。这包括诸如 Bash 和 Zsh 之类的 shell,它们使用 terminfo,例如用于行编辑功能(能够在您上下移动历史时删除行)。这些将 的值映射TERM到能力数据库,该数据库告诉程序或库终端是否可以执行某些任务(例如移动光标、清除屏幕、更改颜色)以及如何执行这些任务。一些程序,例如 GNU grep,甚至没有检查就假定了功能。
改变TERM来自xterm-256color于xterm不会有太大变化,特别是它不会在指程序禁用颜色支持TERM:xterm支持彩色输出了。不同之处在于支持的颜色数量。
请参阅键盘输入和文本输出如何工作?,在手册页的颜色,我使用哪种终端类型?,终端使用什么协议/标准?了解更多详情。