什么使用 TERM 变量?

Shu*_*eng 4 terminal xterm

根据这份文件

环境变量 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,或者更基本的形式 TermcapTerminfo。这包括诸如 Bash 和 Zsh 之类的 shell,它们使用 terminfo,例如用于行编辑功能(能够在您上下移动历史时删除行)。这些将 的值映射TERM到能力数据库,该数据库告诉程序或库终端是否可以执行某些任务(例如移动光标、清除屏幕、更改颜色)以及如何执行这些任务。一些程序,例如 GNU grep,甚至没有检查就假定了功能

改变TERM来自xterm-256colorxterm不会有太大变化,特别是它不会在指程序禁用颜色支持TERMxterm支持彩色输出了。不同之处在于支持的颜色数量。

请参阅键盘输入和文本输出如何工作?在手册页的颜色我使用哪种终端类型?,终端使用什么协议/标准?了解更多详情。

  • 终端模拟器(和 getty)通常是**设置**`TERM` env var的那些。 (2认同)