Je me demande comment une certaine magie terminale fonctionne en interne.
En jouant avec les conteneurs Docker, la variable d'environnement $TERM
n'a pas été défini. Cela a conduit à des applications de console étranges comme vim et tmux, mais aussi à l'ignorance de CTRL+l (écran clair).
Je suis à peu près sûr que toutes les fonctionnalités comme les mises à jour partielles de l'écran, les couleurs, les commandes comme la réinitialisation de l'écran, etc. sont réalisées à l'aide de codes d'échappement, n'est-ce pas ?
Alors où est interprétée cette variable et permet par exemple de réinitialiser l'écran de mon terminal à l'aide de CTRL+l si j'y mets la bonne valeur ? Qui vérifie par exemple, quelles couleurs sont prises en charge (xterm vs xterm-256color) ? La coquille? L'application ou une librairie comme ncurses ? Et où sont définis les valeurs/types de terminaux possibles ?
Réponse acceptée :
$TERM
est lu et interprété par le système terminfo. terminfo fait également référence à la base de données des descriptions de terminaux que vous pouvez trouver sur la plupart des systèmes dans /usr/share/terminfo
. $TERM
doit correspondre à l'une des entrées de cette base de données. Il y avait aussi une ancienne bibliothèque appelée termcap qui avait moins de capacités, mais terminfo l'a remplacée. Dans les systèmes modernes, terminfo fait partie de la bibliothèque ncurses.
Les applications récupèrent généralement les fonctionnalités du terminal directement à l'aide de fonctions de bibliothèque telles que tigetstr()
ou ils utilisent des interfaces curses de niveau supérieur pour gérer la disposition de l'écran. Dans tous les cas, $TERM
et la base de données terminfo sera consultée.