Me pregunto cómo algo de magia terminal funciona internamente.
Mientras jugaba con los contenedores acoplables, la variable de entorno $TERM
no se configuró. Esto condujo a aplicaciones de consola de aspecto extraño como vim y tmux, pero también a que se ignorara CTRL+l (pantalla clara).
Estoy bastante seguro de que todas las características como actualizaciones parciales de pantalla, colores, comandos como reinicio de pantalla, etc. se realizan usando códigos de escape, ¿verdad?
Entonces, ¿dónde se interpreta esta variable y permite, por ejemplo, restablecer la pantalla de mi terminal usando CTRL+l si configuro el valor correcto allí? Quién controla por ejemplo, ¿qué colores son compatibles (xterm vs xterm-256color)? ¿La cáscara? ¿La aplicación o una biblioteca como ncurses? ¿Y dónde se definen los posibles valores/tipos de terminal?
Respuesta aceptada:
$TERM
es leído e interpretado por el sistema terminfo. terminfo también se refiere a la base de datos de descripciones de terminales que puede encontrar en la mayoría de los sistemas en /usr/share/terminfo
. $TERM
debe coincidir con una de las entradas en esa base de datos. También había una biblioteca más antigua llamada termcap que tenía menos capacidades, pero terminfo la reemplazó. En los sistemas modernos, terminfo es parte de la biblioteca ncurses.
Las aplicaciones generalmente obtienen capacidades de terminal directamente usando funciones de biblioteca como tigetstr()
o usan interfaces curses de nivel superior para administrar el diseño de la pantalla. De cualquier manera, $TERM
y se consultará la base de datos terminfo.