Configurando a variável TERM

0

Estou certo de que definir o tipo de terminal na entrada inittab da seguinte forma: c2: ... tty2 linux-m é apenas uma espécie de tarefa informativa - define a variável TERM para informar comandos / programas / aplicativos sobre o tipo de terminal que o sistema realmente é. Isto é, mesmo que o TERM descreva o terminal como tipo monocromático, mas o terminal é realmente capaz de exibir cores quando o comando ls --color=alwaysenvia sua saída para o terminal i mostra cores, mesmo que seja definido como não colorido no inittab?

Ringger81
fonte

Respostas:

0

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.

RedGrittyBrick
fonte