为什么 tput 在 TERM=vt100 上无提示地失败

为什么 tput 在 TERM=vt100 上无提示地失败

我在 macOS 上使用 zsh 和 iTerm 作为我的终端模拟器,并且我的环境TERM=xterm-256color默认情况下是这样。

如果我运行它,tput setaf 3它会以代码 0 退出。

如果我设置TERM=vt100并运行,tput setaf 3它将退出并显示代码 1(表示失败)。

为什么会这样呢?

答案1

vt100没有注意到并失败的setaf功能。tput可以在数据库中找到定义terminfo(5)

% TERM=xterm-256color infocmp | grep setaf
        setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
% TERM=vt100 infocmp | grep setaf
% 

Avt100相当旧,手册中没有提到支持颜色等奇特的东西(显然你可以用 vt100 购买的脚垫有不同的颜色......)。

答案2

VT100s 从未做过彩色(参见ncurses 常见问题)。所以终端描述缺乏该功能,并且作为记录在案,tput 返回错误。

1976 年推出 vt100 时,颜色是一项成本高昂的功能,并未在商品终端上使用。几年后颜色被标准化(至少,ECMA-481979 年第 2 版提供了此信息;第 1 版不可查阅)。

相关内容