一个shell脚本如何判断它是否在具备256色支持的xterm窗口中运行?

5
我正在编写一个Shell脚本,希望在支持256色时使用它。在公正的世界里,xterm应该将TERM环境变量简单地设置为xterm-256color,然后我可以使用tput colors来发现其是否支持。但我们生活在不公正的世界中。即使使用TERM=xterm-256color启动xterm,它仍会将TERM设置为xterm。从Shell脚本中有没有办法发现脚本是否在连接到运行在256色xterm窗口的tty时运行?如果可以,我可以自己设置环境变量。
2个回答

2

您可以检查xterm版本 - $XTERM_VERSION。虽然我不确定从哪个版本开始支持256种颜色。其他终端(例如gnome-terminal)的行为与xterm类似,但还会设置COLORTERM变量以正确的终端名称(gnome-256color)。


XTERM_VERSION的起源可以追溯到2005年,而256色支持则始于1999年,然而软件包可能已经配置了这个功能,也可能没有。 - Thomas Dickey

0

由于现在大多数的 xterm 都有颜色,我假设终端支持256种颜色,并使脚本接受一个选项(例如 -monochrome-no-colors)。

顺便说一下,我也认为某些高级用户会希望强制启用 -monochrome 行为:在非常慢的连接(考虑洲际 ssh)上,禁用颜色以降低带宽可能是有用的。


1
大多数术语仅支持16种颜色。 - J-16 SDiZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接