Ich habe SSH-Zugriff auf einen Remote-Computer. In dieser Maschine echo $TERMbekomme ich, wenn ich renne xterm.
Wie würde ich vorgehen, wenn ich meinen Terminalemulator in einen anderen Emulator ändern möchte (vorausgesetzt, er ist auf dem Remotecomputer installiert)?
Der Wert der Umgebungsvariablen TERM wird vom Server (in System V oder BSD abgeleitete Betriebssysteme) verwendet, um zu steuern, wie Eingaben vom System erkannt werden und welche Funktionen für die Ausgabe vorhanden sind. Einige Terminaltypen sind so ähnlich, dass sie ausgetauscht werden können, während sie weiterhin nützlich sind, während andere das System unbrauchbar machen können, bis Sie eine neue Verbindung mit einem unterstützten Wert für TERM öffnen. Beispielsweise würden Sie von einem Linux-System zum anderen wahrscheinlich nur einen sehr geringen Unterschied zwischen den Einstellungen für vt100, vt220 und xterm feststellen. Die meisten Unterschiede bestehen darin, wie die Ausgabe angezeigt wird und ob für diesen Terminaltyp Farben oder fette Schriftarten verfügbar sind. In der termcap-Datenbank werden alle Terminaltypen mit ihren verschiedenen Funktionen aufgelistet.
Solange Sie nicht zu einem Terminaltyp wechseln, mit dem Ihre Tastatur und Ihr Bildschirm nicht kompatibel sind, ist alles in Ordnung.
Weitere Informationen finden Sie in der Manpage für Begriff und Begriffskappe auf Ihrem System.
So ändern Sie den Terminaltyp:
in bash:
export TERM=vt100
in bourne shell oder ksh:
TERM=vt100
export TERM
in csh oder tcsh:
setenv TERM vt100
vt100ist ein ziemlich sicheres Terminal, mit dem man anfangen kann zu spielen. Es ist mit xterm kompatibel, zeigt jedoch keine Farben oder fetten Schriftarten an und erkennt Ihre F * -Tasten möglicherweise nicht, aber es ist unwahrscheinlich, dass Sie mit vt100 wirklich etwas durcheinander bringen.
Viele Benutzer verwenden die Terminalerkennung in persönlichen Init-Skripten, um ihre Benutzererfahrung zu optimieren, je nachdem, wie sie sich beim Server anmelden. Legen Sie beispielsweise eine einfache PS1 fest, wenn Sie vt100 verwenden, und verwenden Sie Farb- und dynamische Variablen, wenn Sie bash in einem xterm verwenden.
@intrpc Beachten Sie, dass es ziemlich selten ist, die TERMVariable ändern zu müssen . Dies ist meistens erforderlich, wenn Sie sich bei einem älteren System anmelden, das den Namen eines neueren Terminals nicht kennt (und in den letzten 15 Jahren gab es nicht viele neue Terminaltypen, die die meisten Terminalemulatoren als solche bezeichnen xterm). TERMDies ist, was Terminal-Programme glauben, mit denen sie sprechen. Es ändert nichts daran, was das Terminal tatsächlich ist.
Gilles 'SO - hör auf böse zu sein'
9
Du missverstehst.
Ihre Konsole, Ihr Terminal oder Ihre PuTTY-Instanz auf der LOKALEN Seite ist der eigentliche "Terminalemulator", obwohl wir heutzutage nur noch "Terminals" verwenden. Die Verwendung stammt aus der Zeit, als Benutzer tatsächlich Monitor- und Tastaturterminals verwendeten, um sich bei einem Mainframe-Server anzumelden, anstatt mehrere Konsolen und grafische Benutzerumgebungen zu verwenden.
Die Variable $ TERM teilt dem Remote-System einfach mit, welche Art von Steuercodes Ihr Terminal beim Senden versteht (z. B. um textbasierte Menüs oder andere auf libncurses basierende Elemente zu generieren).
Ich bin mir nicht sicher, was genau Sie erreichen möchten, aber das Ändern von $ TERM wird wahrscheinlich nicht helfen.
Danke @Shadur, das ist hilfreich. Ich möchte die Unterstützung für mehr Farben aktivieren. Ich habe Probleme mit entkommenen Zeichen, wie ich im Update in dieser Frage erläutere . Falls es darauf ankommt, sind beide Maschinen / Systeme modern ( Ubuntu 11.10auf meinem lokalen Computer und Red Hat Enterprise Linux Server release 5.4 (Tikanga)auf dem Remote-Computer)
Amelio Vazquez-Reina
Entschuldigung, der Link war zur falschen Frage. Ich habe gerade meinen Kommentar oben bearbeitet.
Amelio Vazquez-Reina
Dann ist Ihr Problem immer noch nicht die TERM-Variable, da mein Gnome-Terminal-Fenster, SSHed an einen Remote-Server mit einem $ TERM-Wert von xterm, keine Probleme beim Rendern von Ansi-Farben hat. Es ist möglicherweise besser, wenn Sie Ihr Problem erklären, als zu fragen, wie Sie das implementieren sollen, was Ihrer Meinung nach die Lösung sein sollte.
Shadur
Danke, aber ich habe nicht gesagt, dass "mein Problem" die $TERMVariable ist. Außerdem stelle ich diese Frage nicht nur, um eine Lösung für ein anderes Problem / eine andere Frage zu finden. Wenn überhaupt, hat meine andere Frage diese Frage motiviert . Schließlich glaube ich nicht, dass etwas falsch daran ist, mit dieser Frage mehr über die Funktionsweise von Terminalemulatoren zu erfahren.
Amelio Vazquez-Reina
Verstehen Sie mich übrigens nicht falsch, ich schätze Ihren Rat und, wie ich bereits sagte, Ihre Antwort hat mir geholfen, Terminalemulatoren besser zu verstehen.
TERM
Variable ändern zu müssen . Dies ist meistens erforderlich, wenn Sie sich bei einem älteren System anmelden, das den Namen eines neueren Terminals nicht kennt (und in den letzten 15 Jahren gab es nicht viele neue Terminaltypen, die die meisten Terminalemulatoren als solche bezeichnenxterm
).TERM
Dies ist, was Terminal-Programme glauben, mit denen sie sprechen. Es ändert nichts daran, was das Terminal tatsächlich ist.Du missverstehst.
Ihre Konsole, Ihr Terminal oder Ihre PuTTY-Instanz auf der LOKALEN Seite ist der eigentliche "Terminalemulator", obwohl wir heutzutage nur noch "Terminals" verwenden. Die Verwendung stammt aus der Zeit, als Benutzer tatsächlich Monitor- und Tastaturterminals verwendeten, um sich bei einem Mainframe-Server anzumelden, anstatt mehrere Konsolen und grafische Benutzerumgebungen zu verwenden.
Die Variable $ TERM teilt dem Remote-System einfach mit, welche Art von Steuercodes Ihr Terminal beim Senden versteht (z. B. um textbasierte Menüs oder andere auf libncurses basierende Elemente zu generieren).
Ich bin mir nicht sicher, was genau Sie erreichen möchten, aber das Ändern von $ TERM wird wahrscheinlich nicht helfen.
quelle
Ubuntu 11.10
auf meinem lokalen Computer undRed Hat Enterprise Linux Server release 5.4 (Tikanga)
auf dem Remote-Computer)$TERM
Variable ist. Außerdem stelle ich diese Frage nicht nur, um eine Lösung für ein anderes Problem / eine andere Frage zu finden. Wenn überhaupt, hat meine andere Frage diese Frage motiviert . Schließlich glaube ich nicht, dass etwas falsch daran ist, mit dieser Frage mehr über die Funktionsweise von Terminalemulatoren zu erfahren.