Para que serve $TERM
?
A $TERM
variável é para ser usada por aplicativos para aproveitar os recursos desse terminal.
Por exemplo, se um programa deseja exibir texto colorido, ele deve primeiro descobrir se o terminal que você está usando suporta texto colorido e, em caso afirmativo, como executar o texto colorido.
A maneira como isso funciona é que o sistema mantém uma biblioteca de terminais conhecidos e seus recursos. Na maioria dos sistemas, existe /usr/share/terminfo
(existe também termcap, mas seu legado não é mais usado muito).
Então, digamos que você tenha um programa que deseja exibir texto em vermelho. Basicamente, faz uma chamada para a biblioteca terminfo que diz " me dê a sequência de bytes que tenho que enviar em texto vermelho para o terminal xterm ". Depois, apenas pega esses bytes e os imprime.
Você pode tentar fazer isso sozinho tput setf 4; echo hi
. Isso obterá o setf
recurso terminfo e passará a ele um parâmetro 4
, que é a cor que você deseja.
Por que o terminal gnome está sobre si mesmo:
Agora, digamos que você tenha algum novo emulador de terminal recém-lançado, e a biblioteca terminfo do sistema ainda não possui uma definição para ele. Quando seu aplicativo procurar informações sobre como fazer algo, ele falhará porque o terminal não é conhecido.
A maneira como o seu terminal contorna isso é mentir sobre quem é. Então seu terminal gnome está dizendo " I'm xterm ".
O Xterm é um terminal muito básico que existe desde o início do X11 e, portanto, a maioria dos emuladores de terminal suporta o que ele suporta. Então, pelo terminal gnome dizendo que é um xterm, é mais provável que tenha uma definição na biblioteca terminfo.
A desvantagem de mentir sobre o seu tipo de terminal é que o terminal pode realmente suportar muito mais do que o xterm (por exemplo, muitos terminais novos suportam 256 cores, enquanto os terminais mais antigos suportam apenas 16). Então você tem uma troca, obtém mais recursos ou tem mais compatibilidade. A maioria dos terminais optará por mais compatibilidade e, assim, escolherá se anunciar como xterm
.
Se você deseja substituir isso, muitos terminais oferecerão uma maneira de configurar o comportamento. Mas você também pode fazer export TERM=gnome-terminal
.