tmux und screen-256 TERM werden auf Remote-Hosts nicht unterstützt

tmux und screen-256 TERM werden auf Remote-Hosts nicht unterstützt

Ich habe mein tmux für die Verwendung eingerichtet screen-256colorsund es funktioniert hervorragend mit vim.

Wenn ich jedoch von tmux aus eine SSH-Verbindung zu einem Remote-Host herstelle, screen-256colorswird dieser nicht erkannt und ich erhalte Fehlermeldungen wie diese:

E558: Terminal entry not found in terminfo 'screen-256color' not known. Available builtin terminals are:
    builtin_ansi
    builtin_xterm
    builtin_iris-ansi
    builtin_dumb defaulting to 'ansi'

Anders als das Bearbeiten jeder Fernbedienung .bashrc(ähnlich wiedieser VorschlagTERM), gibt es eine Möglichkeit, dies auf dem Remote-Host korrekt und automatisch einzustellen ?

Antwort1

In den meisten Fällen müssen Sie die erforderlichenTermininfoBeschreibungen auf dem Remote-Host. Mit Terminfo legen Linux-Programme fest, wie mit einem bestimmten Terminal verfahren werden soll (welche Steuercodes gesendet werden sollen).

Unter Debian oder Ubuntu benötigen Sie beispielsweise normalerweise das ncurses-basePaket (das Terminfo-Daten für alle „etablierten“ Terminalemulatoren sammelt).

Andernfalls können Sie die Terminfo-Daten für bestimmte Terminals manuell kopieren:

  1. Geben Sie auf dem lokalen System die Beschreibung im Textformat aus:

    infocmp xterm-256color > xterm-256color.ti
    infocmp screen-256color > screen-256color.ti
    
  2. Kopieren Sie die Dateien auf den Remote-Host und kompilieren Sie sie erneut:

    tic xterm-256color.ti
    tic screen-256color.ti
    

Unter Linux werden die Beschreibungen in gespeichert ~/.terminfo. (Beachten Sie, dass dieser Speicherort seit den letzten Updates von 2023nichtkann nicht mehr von „setuid“-Programmen gelesen werden, obwohl diese im Allgemeinen selten sind.)

infocmpund ticsind Teil derAbonnierenoderncurses-binPakete in den meisten Linux-Distributionen sowie den meisten BSDs, dieAbonnieren(unter BSDs gibt es allerdings möglicherweise keine Datenbank pro Benutzer).

Antwort2

Ich habe dies in meiner .bashrc:

alias ssh='TERM=screen ssh'

verwandte Informationen