저는 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
%
A vt100
는 꽤 오래되었으며 설명서에는 지원되는 색상과 같은 멋진 내용이 언급되어 있지 않습니다(분명히 vt100으로 구입할 수 있는 바닥 매트는 다른 색상으로 제공됩니다...).
답변2
VT100은 컬러로 제작된 적이 없습니다(참조:ncurses FAQ). 따라서 터미널 설명에는 해당 기능이 부족하고 다음과 같이 제공됩니다.파일에 기록하다, tput이 오류를 반환합니다.
1976년 vt100이 출시되었을 때 컬러는 비용이 많이 드는 기능이었으며 일반 단말기에서는 사용할 수 없었습니다. 몇 년 후 색상이 표준화되었습니다(적어도ECMA-481979년의 두 번째 판에서는 이 정보를 제공합니다. 첫 번째 판은 사용할 수 없습니다.