TERM é realmente informativo, mas muitos programas / comandos o respeitarão ou confiarão nele.
Como a cor é produzida pode depender muito do tipo de terminal. Na prática, suspeito que todos eles usam ANSI (ou um superconjunto) onde a cor é suportada.
Se TERM for definido como um tipo de terminal mono, um programa precisará usar 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 a fazer se o terminal fosse realmente mono; seria melhor para o comando / programa usar métodos mono (por exemplo, reverso, sublinhado, intensidade, riscar, piscar, etc.) no lugar da cor para distinguir visualmente os elementos .
Se o programa / comando específico respeitar o TERM (como muitos fazem), é igualmente provável que você informe que sua solicitação de cores não é suportada pelo tipo de terminal.
Consulte http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html
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()é implementado e não sei qual proporção (se houver) de programas / comandos segue o padrão acima.
Acho que um pedaço de software muito importante respeita TERM
TERM=xterm-mono robotfindskitten
(mono display)
Por outro lado, lssabe quando estou mentindo.