À quoi ça sert $TERM
?
La $TERM
variable est utilisée par les applications pour tirer parti des fonctionnalités de ce terminal.
Par exemple, si un programme souhaite afficher du texte en couleur, il doit d'abord savoir si le terminal que vous utilisez prend en charge le texte en couleur, puis, le cas échéant, comment le faire en couleur.
La façon dont cela fonctionne est que le système conserve une bibliothèque de terminaux connus et de leurs capacités. Sur la plupart des systèmes, cela se trouve /usr/share/terminfo
(il y a aussi termcap, mais son héritage n’est plus très utilisé).
Alors disons que vous avez un programme qui veut afficher du texte rouge. Il appelle essentiellement la bibliothèque terminfo qui dit " donnez-moi la séquence d'octets que je dois envoyer pour le texte rouge pour le terminal xterm ". Ensuite, il suffit de prendre ces octets et de les imprimer.
Vous pouvez essayer cela vous-même en faisant tput setf 4; echo hi
. Cela obtiendra la setf
capacité terminfo et lui passera un paramètre 4
, qui est la couleur que vous voulez.
Pourquoi gnome terminal repose sur lui-même:
Maintenant, disons que vous avez un nouvel émulateur de terminal brillant qui vient d'être publié, et que la bibliothèque terminfo du système n'a pas encore de définition pour celui-ci. Lorsque votre application va rechercher comment faire quelque chose, elle échouera car le terminal n'est pas connu.
Votre terminal parvient à contourner ce problème en mentant à propos de qui il s'agit. Donc, votre terminal gnome dit " je suis xterm ".
Xterm est un terminal très basique qui existe depuis l’aube de X11, et la plupart des émulateurs de terminaux supportent donc ce qu’il supporte. Donc, en disant que le terminal gnome est un xterm, il est plus probable qu’il ait une définition dans la bibliothèque terminfo.
L'inconvénient de mentir au sujet de votre type de terminal est que le terminal peut en réalité supporter beaucoup plus que xterm (par exemple, de nombreux nouveaux terminaux supportent 256 couleurs, alors que les anciens terminaux n'en supportaient que 16). Donc, vous avez un compromis, obtenez plus de fonctionnalités ou avez plus de compatibilité. La plupart des terminaux opteront pour davantage de compatibilité et choisiront donc de se faire connaître xterm
.
Si vous souhaitez éviter cela, de nombreux terminaux vous proposeront un moyen de configurer le comportement. Mais vous pouvez aussi simplement faire export TERM=gnome-terminal
.