A cosa serve $TERM
?
La $TERM
variabile è utilizzata dalle applicazioni per sfruttare le funzionalità di quel terminale.
Ad esempio, se un programma desidera visualizzare testo colorato, deve prima scoprire se il terminale in uso supporta il testo colorato e, in tal caso, come eseguire il testo colorato.
Il modo in cui funziona è che il sistema mantiene una libreria di terminali noti e le loro capacità. Sulla maggior parte dei sistemi è presente /usr/share/terminfo
(c'è anche termcap, ma il suo lascito non è più usato molto).
Supponiamo quindi che tu abbia un programma che vuole visualizzare testo rosso. Fondamentalmente effettua una chiamata alla libreria terminfo che dice " dammi la sequenza di byte che devo inviare per il testo rosso per il terminale xterm ". Quindi prende solo quei byte e li stampa.
Puoi provarlo tu stesso tput setf 4; echo hi
. Questo otterrà la setf
capacità terminfo e gli passerà un parametro di 4
, che è il colore desiderato.
Perché gnome terminal si trova su se stesso:
Ora supponiamo che tu abbia un nuovo brillante emulatore di terminale che è stato appena rilasciato, e la libreria terminfo del sistema non ha ancora una definizione per questo. Quando l'applicazione va a cercare come fare qualcosa, fallirà perché il terminale non è noto.
Il modo in cui il tuo terminale aggira questo è mentendo su chi è. Quindi il tuo terminale di gnome sta dicendo " I'm xterm ".
Xterm è un terminale molto semplice che esiste sin dagli albori di X11 e quindi la maggior parte degli emulatori di terminali supportano ciò che supporta. Quindi, da gnome terminal dicendo che è un xterm, è più probabile che abbia una definizione nella libreria terminfo.
L'aspetto negativo di mentire sul tipo di terminale è che il terminale potrebbe effettivamente supportare molto più di xterm (ad esempio, molti nuovi terminali supportano 256 colori, mentre i terminali più vecchi ne supportano solo 16). Quindi hai un compromesso, ottieni più funzionalità o hai più compatibilità. La maggior parte dei terminali opterà per una maggiore compatibilità e quindi sceglierà di pubblicizzarsi come xterm
.
Se si desidera ignorare questo, molti terminali offriranno un modo per configurare il comportamento. Ma puoi anche farlo export TERM=gnome-terminal
.