TERM
, por convención se refiere a una descripción de terminal. Originalmente, esto nombró una sección de un archivo de texto termcap (a partir de finales de la década de 1970). A mediados de la década de 1980, terminfo se introdujo como un archivo compilado (binario) que ahorraba tiempo al obtener la descripción del terminal. Si bien ambos están disponibles para todas las plataformas similares a Unix, termcap rara vez se usa hoy en día, excepto como una emulación que usa terminfo.
Para ambos formatos de datos, las aplicaciones generalmente extraen datos de la base de datos del terminal con bibliotecas de programación reutilizables. La biblioteca de programación terminfo generalmente es parte de la biblioteca de curses de nivel superior, aunque puede proporcionarse (por ejemplo, opcionalmente como ncurses) como un archivo de biblioteca separado. Si la biblioteca terminfo se proporciona por separado o no, en estos casos se considera parte de la biblioteca curses. (También hay algunas otras bibliotecas de nivel superior, como la jerga).
La entrada de la base de datos de terminales para cada terminal contiene propiedades denominadas capacidades . Le dicen a la biblioteca de maldiciones (o aplicaciones que usan termcap / terminfo directamente) cómo realizar operaciones útiles, como limpiar la pantalla. Para la mayoría de las terminales, es una secuencia de escape. Algunos terminales pueden no admitir una secuencia de escape para este propósito; Hay otras capacidades que pueden combinarse con la biblioteca curses para borrar la pantalla (como borrar cada línea). No todas las capacidades son secuencias de escape. También hay capacidades booleanas y numéricas , por ejemplo, para saber si una característica es compatible y qué tan grande es algo (como el tamaño de la pantalla).
Cada aplicación que usa termcap / terminfo usa la biblioteca correspondiente para recuperar la descripción del terminal, así como para realizar operaciones tales como la sustitución de parámetros en ciertas capacidades. Por ejemplo, la mayoría de los terminales ofrecen la capacidad de mover el cursor en un número determinado de columnas o filas desde su ubicación actual. Las funciones tparm
(o tiparm
) sustituyen el número en la capacidad de obtener la secuencia de escape real.
La biblioteca curses tiene aplicaciones de línea de comandos que mantienen la base de datos del terminal ( tic , infocmp ) y algunas que se utilizan en scripts de shell para consultar la base de datos del terminal o realizar operaciones de bajo nivel con capacidades de terminal ( tput , tset / reset ).
Hay aplicaciones no convencionales que se usan TERM
sin usar la base de datos del terminal. La mayoría de estos simplemente codifican su comportamiento (como GNU grep, groff y los enlaces / links2 / elinks navegadores web textuales), mientras que algunos tienen lo que equivale a su propia base de datos de terminal (como GNU ls), pero usan diferentes reglas y comportamiento.
Volver a la (s) pregunta (s):
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í?
La aplicación y las bibliotecas subyacentes interpretan este valor. Para controlL, eso se puede hacer para bash en la biblioteca readline (que usa una interfaz de programación termcap).
¿Quién comprueba, por ejemplo, qué colores son compatibles (xterm vs xterm-256color)?
La base de datos del terminal almacena el número de colores como una capacidad, junto con las capacidades para configurar los colores de primer plano y de fondo y restablecer los colores. Algunas aplicaciones combinan estas capacidades con otra información (como la afirmación de un desarrollador que xterm
es "realmente" xterm-256color
).
¿La cáscara?
La mayoría de los shells usan una interfaz de programación termcap para obtener la información del terminal. Sin embargo, son aplicaciones que tienen su propio comportamiento (no necesariamente lo mismo que las maldiciones).
¿La aplicación o una biblioteca como ncurses?
(ver arriba: los shells son un tipo particular de aplicación)
¿Y dónde se definen los posibles valores / tipos de terminal?
Por lo general, se encuentra en una base de datos de terminal compartida por aplicaciones que usan las bibliotecas curs o slang. Algunas aplicaciones están codificadas o usan una base de datos privada.
Otras lecturas: