O que é $TERM
?
A variável $TERM
é usada pelos aplicativos para aproveitar os recursos desse terminal.
Por exemplo, se um programa quiser exibir texto colorido, ele deve primeiro descobrir se o terminal que você está usando suporta texto colorido e, em caso afirmativo, como fazer texto colorido.
A maneira como isso funciona é que o sistema mantém uma biblioteca de terminais conhecidos e suas capacidades. Na maioria dos sistemas, isso é em /usr/share/terminfo
(também há termcap, mas o legado não é mais usado).
Então, digamos que você tenha um programa que queira exibir texto em vermelho. Basicamente, ele faz uma chamada para a biblioteca terminfo que diz " me dê a seqüência de bytes que eu tenho que enviar para texto em vermelho para o terminal xterm ". Então ele pega esses bytes e os imprime.
Você mesmo pode tentar isso fazendo tput setf 4; echo hi
. Isso obterá o recurso setf
terminfo e passará um parâmetro de 4
, que é a cor desejada.
Por que o terminal do gnome é sobre si mesmo:
Agora vamos dizer que você tem um emulador de terminal novo e brilhante que acabou de ser lançado, e a biblioteca terminfo do sistema ainda não tem uma definição para ele. Quando seu aplicativo for procurar algo, ele falhará porque o terminal não é conhecido.
A maneira como seu terminal contorna isso é mentindo sobre quem é. Então o seu terminal gnome está dizendo " eu sou xterm ".
O Xterm é um terminal muito básico que existe desde o alvorecer do X11, e assim a maioria dos emuladores de terminal suportam o que suporta. Então, pelo terminal do gnome dizendo que é um xterm, é mais provável que tenha uma definição na biblioteca terminfo.
A desvantagem de mentir sobre o tipo de terminal é que o terminal pode realmente suportar muito mais do que o xterm (por exemplo, muitos novos terminais suportam 256 cores, enquanto terminais mais antigos suportam apenas 16). Então você tem uma compensação, obtenha mais recursos ou tenha mais compatibilidade. A maioria dos terminais irá optar por mais compatibilidade e, assim, optar por se anunciar como xterm
.
Se você quiser substituir isso, muitos terminais oferecerão alguma maneira de configurar o comportamento. Mas você também pode fazer apenas export TERM=gnome-terminal
.