Warum setzt tmux die TERM-Variable auf den Bildschirm?

Warum setzt tmux die TERM-Variable auf den Bildschirm?

Zitierte tmuxManpage:

Die Umgebungsvariable TERM muss für alle Programme, die in tmux laufen, auf „screen“ gesetzt werden. Neue Fenster erhalten automatisch „TERM=screen“ als Umgebungsvariable, aber es muss darauf geachtet werden, dass dies in Shell-Startdateien nicht zurückgesetzt wird.

Liegt das daran, dass tmuxdie Sitzung an jedes Terminal (z. B. Remote) angeschlossen werden kann, screenda es sich um den kleinsten gemeinsamen Nenner handelt? Wenn ich mein Terminal kenne, kann ich es ohne unerwartete Ergebnisse erzwingen, oder würden einige nicht unterstützte Funktionen (z. B. Scrollen) unterbrochen?

Antwort1

Dies geschieht, um die zuvor installierte Terminalbeschreibung für den GNU-Bildschirm zu nutzen.

BeidetmuxUndBildschirmStellen Sie Anwendungen (mehr oder weniger) die „gleichen“ Terminalbeschreibungen zur Verfügung, um die Verbindung von verschiedenen Terminals aus zu vereinfachen. Die Programme tmux und screen sollen die Unterschiede zwischen dem internen (TERM=screen) und dem externen (xterm, linux usw.) Terminal handhaben. Daher screenwurde die Terminalbeschreibung „überall“ installiert (normalerweise von ncurses).

Es gibt einige Unterschiede:

  • GNU screen hat einesehr altes Problemstellt das "herausragende" Feature dar (das technisch gesehen kein spezifisches Terminal-Feature ist, sondern eine Abstraktion für die Bequemlichkeit von Curses-Anwendungen). tmux hat diese Einschränkung nicht. Aber die verbesserteTERM=tmuxist nicht unbedingt „überall“.
  • GNU screen verfügt über eine Funktion zur Verwendung hybrider Terminalbeschreibungen. Wenn das externe TERM=xterm und die Existenz von „screen.xterm“ vorliegen, wird dies als interner TERM-Wert gewählt. (Siehe beispielsweise dieTerminaldatenbank). tmux macht das nicht.

Antwort2

Abtmux 2.1, du kannst den ... benutzentmux Termininfo:

„default-terminal“ ist jetzt eine Sitzungsoption. Wenn dies auf „screen-*“ eingestellt ist, wird außerdem emuliert, was screen tut. Wenn Kursivschrift gewünscht wird, kann dies auf „tmux“ eingestellt werden, aber das ist noch neu und wird nicht unbedingt auf allen Plattformen mit älteren Ncurses-Installationen unterstützt.

verwandte Informationen