设置 TERM 变量

设置 TERM 变量

我是否正确,在 inittab 条目中设置终端类型,如下所示:c2:... tty2 linux-m 只是某种信息性任务 - 设置 TERM 变量以通知命令/程序/应用程序系统实际上是哪种终端类型。即使 TERM 将终端描述为单色类型,但当命令(例如将ls --color=always其输出发送到终端 i)显示颜色时,终端确实能够显示颜色,即使在 inittab 中将其定义为非彩色?

答案1

TERM 确实提供了信息,但许多程序/命令都会尊重它或依赖它。

如何产生颜色在很大程度上取决于终端类型。实际上,我怀疑它们都使用支持颜色的 ANSI(或超集)。

如果 TERM 设置为单声道终端类型,程序必须使用其他信息来决定使用哪种类型的终端颜色控制。如果默认为“ANSI”,那么现在在大多数情况下它都可以正常工作。

如果终端确实是单色的,那么这样做就不好了,命令/程序最好使用单色方法(例如反转、下划线、强度、删除线、闪烁等)代替颜色来在视觉上区分元素。

如果特定程序/命令尊重 TERM(许多程序/命令都尊重),则同样可能会向您报告终端类型不支持您的颜色请求。

http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html

if(has_colors() == FALSE)
    {   endwin();
        printf("Your terminal does not support color\n");
        exit(1);
    }

我还没有检查 ncurses 源代码来了解它has_colors()是如何实现的,而且我不知道有多少比例(如果有的话)的程序/命令遵循上述模式。

我发现一个非常重要的软件尊重TERM

TERM=xterm-mono robotfindskitten

(mono display)

另一方面,ls知道我什么时候撒谎。

相关内容