我在 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 版不可查阅)。