TERM é de fato informativo, mas muitos programas / comandos irão respeitá-lo ou confiar nele.
Como a cor é produzida pode depender muito do tipo de terminal. Na prática, suspeito que todos usam ANSI (ou um superconjunto) onde a cor é suportada.
Se TERM for definido para um tipo de terminal mono, um programa teria que usar algumas outras informações para decidir qual tipo de controle de cores do terminal usar. Se o padrão for "ANSI", provavelmente funcionará na maioria das circunstâncias hoje em dia.
Isso seria uma coisa ruim se o terminal fosse realmente mono, seria melhor para o comando / programa usar métodos mono (por exemplo, reverso, sublinhado, intensidade, strikeout, piscar, etc) no lugar da cor para visualmente distinguir elementos.
Se o programa / comando particular respeitar o TERM (como muitos fazem), é igualmente provável que ele informe que sua solicitação de cor não é suportada pelo tipo de terminal.
Veja o link
if(has_colors() == FALSE)
{ endwin();
printf("Your terminal does not support color\n");
exit(1);
}
Eu não inspecionei o código-fonte do ncurses para ver como has_colors()
está implementado e não sei que proporção (se houver) de programas / comandos segue o padrão acima.
Acho que um software muito importante respeita o TERM
TERM=xterm-mono robotfindskitten
(mono display)
Por outro lado, ls
sabe quando estou mentindo.