Mi chiedo come si possa fare un po' di magia terminale funziona internamente.
Mentre si gioca con i contenitori docker, la variabile d'ambiente $TERM
non era impostato. Ciò ha portato a applicazioni console dall'aspetto strano come vim e tmux, ma anche a CTRL+l (schermo pulito) ignorate.
Sono abbastanza sicuro che tutte le funzionino come gli aggiornamenti parziali dello schermo, i colori, i comandi come il ripristino dello schermo ecc. sono realizzati utilizzando codici di escape, giusto?
Quindi, dove viene interpretata questa variabile e consente, ad esempio, di ripristinare lo schermo del mio terminale usando CTRL+l se ho impostato il valore corretto lì? Chi controlla ad esempio quali colori sono supportati (xterm vs xterm-256color)? Il guscio? L'applicazione o una libreria come ncurses? E dove sono definiti i possibili valori/tipi di terminale?
Risposta accettata:
$TERM
viene letto e interpretato dal sistema terminfo. terminfo si riferisce anche al database delle descrizioni dei terminali che puoi trovare sulla maggior parte dei sistemi in /usr/share/terminfo
. $TERM
deve corrispondere a una delle voci in quel database. C'era anche una vecchia libreria chiamata termcap che aveva meno capacità, ma terminfo l'ha sostituita. Nei sistemi moderni, terminfo fa parte della libreria ncurses.
Le applicazioni di solito recuperano le funzionalità del terminale direttamente utilizzando funzioni di libreria come tigetstr()
oppure utilizzano interfacce di curses di livello superiore per gestire il layout dello schermo. Ad ogni modo, $TERM
e verrà consultato il database terminfo.