Ich frage mich, wie etwas terminale Magie arbeitet intern.
Beim Herumspielen mit Docker-Containern wird die Umgebungsvariable $TERM
war nicht eingestellt. Dies führte zu seltsam aussehenden Konsolenanwendungen wie vim und tmux, aber auch dazu, dass STRG+l (Bildschirm löschen) ignoriert wurde.
Ich bin mir ziemlich sicher, dass alle Feature wie partielle Bildschirmaktualisierungen, Farben, Befehle wie Bildschirmrücksetzung usw. werden über Escape-Codes realisiert, oder?
Wo wird diese Variable also interpretiert und ermöglicht beispielsweise das Zurücksetzen meines Terminalbildschirms mit STRG + l, wenn ich dort den richtigen Wert einstelle? Wer prüft Welche Farben werden beispielsweise unterstützt (xterm vs. xterm-256color)? Die Muschel? Die Anwendung oder eine Bibliothek wie ncurses? Und wo sind die möglichen Werte / Terminaltypen definiert?
Akzeptierte Antwort:
$TERM
wird vom terminfo-System gelesen und interpretiert. terminfo bezieht sich auch auf die Datenbank mit Terminalbeschreibungen, die Sie auf den meisten Systemen unter /usr/share/terminfo
finden . $TERM
muss mit einem der Einträge in dieser Datenbank übereinstimmen. Es gab auch eine ältere Bibliothek namens termcap, die weniger Fähigkeiten hatte, aber terminfo hat sie ersetzt. In modernen Systemen ist terminfo Teil der ncurses-Bibliothek.
Anwendungen rufen normalerweise entweder Terminalfunktionen direkt ab, indem sie Bibliotheksfunktionen wie tigetstr()
verwenden oder sie verwenden Fluchschnittstellen auf höherer Ebene, um das Layout des Bildschirms zu verwalten. So oder so, $TERM
und die terminfo-Datenbank wird konsultiert.