Ich benutze derzeit Fedora 18 Gnome-Terminal , dann tmux
Multiplexer darin gestartet . Nachdem ich über einen Befehl eine Verbindung zu einem CentOS 5-Server hergestellt habe ssh
, finde ich Folgendes:
ls
Ergebnis hat keine Farbetmux
,screen
,hexedit
,htop
Alle beginnen mit Fehlermeldung fehlgeschlagen wie:offenes Terminal fehlgeschlagen: fehlendes oder ungeeignetes Terminal: screen-256color
Es scheint, dass ssh
die Umgebungsvariable $ TERM an den Server übergeben wird, aber ich kann sie in der /etc/ssh/ssh_config
Datei von Fedora 18 nicht finden .
Obwohl ich die Variable $ TERM auf dem Server manuell ändern kann, geschieht dies jedes Mal, wenn ich eine Verbindung herstelle. Wie kann man das verhindern?
quelle
infocmp
undtic
nach der Kompilierung keine vorübergehende Änderung$TERM
mehr erforderlich . Übrigens, ich habe gerade (rsync)/usr/share/terminfo/s/screen-256color
von Fedora 18 nach CentOS kopiert , es scheint in Ordnung zu sein (rsync -tv /usr/share/terminfo/s/screen-256color root@the_host:/usr/share/terminfo/s
).tmux
im gnome-terminal von fedora 18,tmux
änderte den$TERM
wert aufscreen-256color
vonxterm-256color
.infocmp | ssh -t root@remote-host 'cat > "$TERM.info" && tic "$TERM.info"'
kann auf gekürzt werdeninfocmp | ssh root@remote-host "tic -"
. Dies funktioniert, weil auf eine Pipe mit - als Datei zugegriffen werden kann und glücklicherweise Pipes über SSH funktionieren.tic
(terminfo compiler) generierten Dateien von einem System zum nächsten identisch ist oder dass ihr Speicherort identisch ist.tic
Stellen Sie möglicherweise auch sicher, dass die Berechtigungen korrekt sind, oder erstellen Sie bei Bedarf Zwischenverzeichnisse.In meinem Fall habe ich meinem Alias
.zshrc
(.bashrc
wenn ich Bash verwende) auf meinem lokalen Desktop einfach einen Alias hinzugefügt :Wenn Sie bereits einen Alias verwenden, passen Sie ihn an, um die Umgebungszuweisung einzuschließen.
quelle
Ich habe dies in meinem
.bashrc
auf dem Remote-Host:Auf diese Weise werden beide
xterm-256color
undscreen-265color
richtig gehandhabt. Außerdem muss ich den Hinweis ausgeben, damit ich mich nicht wundere, warum meine TERM-Variable beim SSHing geändert wird, wenn der Server später aktualisiert wird und 256 Farben unterstützt.quelle
export TERM=${TERM%%-256color}
Das Ändern
$TERM
könnte funktionieren, aber ich schlage dies nicht vor, es ist nur eine Problemumgehung anstelle einer Lösung.Wenn ich auf meinen Systemen auf dieses Problem stoße, behebe ich es, indem ich die Unterstützung für die gängigsten Terminaltypen auf dem Remote-System installiere:
yum install ncurses-base
fürscreen-256color
auf CentOSyum install ncurses-term
fürscreen-256color-bce
auf CentOSapt install ncurses-base
für beidescreen-256color
undscreen-256color-bce
für Debian, Ubuntu und MintDie Pakete für ncurses bieten auch Unterstützung für viele andere Terminals und sind auch für alle anderen großen Distributionen verfügbar. (Aber für meinen Anwendungsfall und Ihre Frage sollte dies genug Information sein)
quelle
Siehe man ssh_config:
und man sshd_config:
Demnach sollte der Standardwert nicht darin bestehen, Variablen zu senden, aber TERM scheint etwas Besonderes zu sein. Es wird trotzdem gesendet.
Daher können Sie entweder TERM ändern, wenn Sie ssh aufrufen (wie
TERM=xterm ssh ...
), oder es nach der Anmeldung ändern (wie in.bash_profile
), oder den unbekannten TERM-Typ auf der Serverseite definieren (vorausgesetzt, Sie haben dort Root-Zugriff). Siehe andere Antwort für Details.quelle
$TERM
jedoch nicht besser als eine Einstellung auf einen nicht unterstützten Wert.$TERM
vorübergehende Änderung kann eine Problemumgehung sein, aber ich muss es jedes Mal tun. durch die Art und Weise, so scheint es , dass beiden CentOS 5 und Fedora 18 Akzeptieren Env alle Umgebungsvariablen locale (LANG
,LC_*
, ...)