Warum setzt tmux die TERM-Variable auf screen?

19

Zitieren der tmuxManpage:

Die Umgebungsvariable TERM muss für alle Programme, die in tmux ausgeführt werden, auf "screen" gesetzt sein. Bei neuen Fenstern wird der Umgebung automatisch "TERM = screen" hinzugefügt. Es muss jedoch darauf geachtet werden, dass dies in den Startdateien der Shell nicht zurückgesetzt wird.

Liegt das daran, dass die tmuxSitzung an ein beliebiges Terminal (z. B. Remote) angeschlossen werden kann und screender kleinste gemeinsame Nenner ist? Wenn ich mein Terminal kenne, kann ich es erzwingen, ohne dass es zu unerwarteten Ergebnissen kommt, oder würden einige nicht unterstützte Funktionen (z. B. Scrollen) nicht funktionieren?

Sevo
quelle

Antworten:

13

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

Sowohl tmux als auch screen bieten Anwendungen (mehr oder weniger) die gleichen Terminalbeschreibungen, um das Verbinden von verschiedenen Terminals zu vereinfachen. Die tmux- und screen-Programme sollen die Unterschiede zwischen intern (TERM = screen) und extern (xterm, linux usw.) behandeln. Daher wurde die screenTerminalbeschreibung "überall" installiert (normalerweise von ncurses).

Es gibt einige Unterschiede:

  • GNU-Bildschirm hat ein sehr altes Problem, das die "herausragende" Funktion darstellt (die technisch gesehen keine spezifische Terminalfunktion ist, sondern eine Abstraktion für die Bequemlichkeit von Curses-Anwendungen). tmux hat diese Einschränkung nicht. Aber der verbesserte TERM = tmux ist nicht unbedingt "überall".
  • Der GNU-Bildschirm verfügt über eine Funktion zur Verwendung von Hybrid-Terminal-Beschreibungen. Bei dem externen TERM = xterm und dem Vorhandensein von "screen.xterm" wird dies für den internen TERM-Wert ausgewählt. (siehe zum Beispiel die Terminaldatenbank ). tmux macht das nicht.
Thomas Dickey
quelle
5

Ab tmux 2.1 können Sie das tmux terminfo verwenden :

'default-terminal' ist jetzt eine Sitzungsoption. Wenn dies auf 'screen- *' gesetzt ist, wird emuliert, was der Bildschirm tut. Wenn Kursivschrift gewünscht wird, kann dies auf 'tmux' gesetzt werden, dies ist jedoch noch neu und wird nicht unbedingt auf allen Plattformen mit älteren ncurses-Installationen unterstützt

jasonwryan
quelle