[linux-l] unterschiedliche "xterm" wie richtig verwenden?
Lutz Willek
lutz.willek at belug.de
Mi Sep 5 10:36:53 CEST 2012
Am 04.09.2012 15:23, schrieb Steffen Dettmer:
> Hi,
Moin,
> ich kriege Farben und UTF8 Support in verschiedenen
> xterm-Terminals nicht richtig und allgemeingültig konfiguriert.
Zu den Farben kann ich nix sagen, ich kürze das daher mal raus.
> - verschiedene XFree xterms (mit 8, 16 oder 256 Farben, mit/ohne UTF-8)
> - cygwin xterm (der port scheint recht ähnlich zu normalem xterm zu sein)
> - putty (wohl immer 256 Farben, mit/ohne UTF8)
Ich muss auch öfter Putty nutzen. Meines Wissens ist der UTF-8 Support
ein internes Putty-Problem: Ich meine mich auch an Schriftarten zu
erinnern, die nicht gut zusammen mit UTF-8 in Putty funktionieren, finde
dazu aber gerade keinen Link mehr, ärgert mich gerade etwas.
Allgemein hilfreich zum Thema finde ich folgenden Link:
http://www.michael-schummel.de/2007/10/22/putty-und-utf-8/
Inzwischen bin ich jedoch fast vollständig weg von Putty, hin zu
mobaxterm. Dies ist im Endeffekt eine cygwin bash mit X-Server und
hübscher Oberfläche, lässt sich auch leichter über mehrere Rechner
hinweg synchron halten und hat eine lesbare (lies: bearbeitbare)
Konfiguration. Dank "richtiger" shell habe ich seither auch weniger
Zeichnsatzprobleme.
http://mobaxterm.mobatek.net/support/documentation.html
Wo das nicht nicht einsetzbar ist nutze ich (aus verschiedensten
Gründen) nicht putty, sondern kitty: http://kitty.9bis.com/
Aber das nur am Rande, da nicht die Fragestellung.
> Wenn ich bei Putty "translation" auf UTF-8 stelle, muss ich auf
> einem Server "export LC_CTYPE=de_DE.UTF-8" oder etwas in der Art
> machen, damit vim richtig funktioniert, weil sonst steht locale
> auf "de_DE at euro".
Ich löse das für mich zufriedenstellend mit folgender Einstellung in
Putty für alle Verbindungen:
-->Windows-->Translation-->Remote character set: UTF-8
-->Windows-->Translation--> "Adjust line drawing characters"
* [x] Use Unicode line drawing code points
-->Connection-->Data-->"Terminal details": Terminal-type string: "linux"
-->Connection-->Data-->"Environment variables":
* die drei Variablen LANG, LC_ALL *und* zusätzlich LC_CTYPE
auf "de_DE.utf8"
Das gleiche (und mehr) erreiche ich in meinen ~/.ssh/config Einstellungen:
> # This enables sending locale enviroment variables LC_* LANG, see ssh_config(5).
> SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
> SendEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
> SendEnv LC_IDENTIFICATION LC_ALL
> SendEnv http_proxy EDITOR CONCURRENCY_LEVEL HISTCONTROL GREP_OPTIONS no_proxy DEBFULLNAME COLORTERM GREP_COLOR
Achtung!
Der ssh Server des Zielsystems (/etc/ssh/sshd_config) muss unter
Umständen konfiguriert werden, damit die Variablen auch durch gereicht
werden: "AcceptEnv", siehe http://linux.die.net/man/5/sshd_config
Standardmäßig lasse ich einige Variablen zu. Die Anmerkung der Manpage
dazu sollte man unbedingt lesen und idealerweise auch verstehen.
> Für lokale xterms und Consolen könnte man sich das vielleicht
> noch via /etc/profile hinbiegen, aber ich hab hier ja oft
> auch ein remote xterm, was ein SSH gemacht hat und ein ganz
> anderes xterm sein kann, als das lokale.
Siehe oben, Konfiguration des ssh-servers.
> Ich hab schon viel gegoogelt, aber nicht herrausgefunden, wie das
> Terminal-Encoding nun automatisch herausgefunden werden soll.
Gar nicht! Terminalencoding ist Sache des Nutzers, Du _musst_ es für
Dich passend einstellen. Das beherrschen alle mir bekannten seit Jahren
ohne größere Schwierigkeiten.
Das eigentliche Problem dabei ist, dass:
a.) die Gegenseite Deine Umgebung auch bereitstellen kann
b.) die Variablen auch über ssh weiter gegeben werden können
Im a.)-Fall kann ich mir mit hostspezifischen Einträgen in meiner
privaten ssh-config helfen, die das eben passend umkonfigurieren.
Im b.)-Fall hilft nur eine Anfrage an die Administration des Systems,
als User kannst Du da nichts machen.
imho: Eine freundliche Mail an den Admin des Servers hilft jedoch
erstaunlich oft, in beiden Fällen ;)
> Kann ja nicht sein, dass ich immer wissen muss, was mein xterm
> macht und dann per Hand LC_CTYPE setzen muss. Ich hatte mal
> probiert, dass mit putty ins Environment eintragen zu lassen, hat
> aber keinen sichtbaren Effekt[...]
> Wie macht man das richtig?
siehe oben: per default reicht der sshd die Variablen nicht durch.
> Die ganzen UTF-8 HOWTOs, die ich fand, gehen scheinbar von der
> irrigen Annahme aus, man würde immer, überall, auf allen Systemen
> und unbedingt UTF8 machen, was ja wohl kaum der Normalfall sein
> dürfte.
Ha! Ich sag mal so: Der Idealzustand ist seit längerem: "immer und
überall UTF-8". Und leider leben wir halt nicht in einer perfekten Welt.
Und wenn dann einige Leute, sei es aus Unwissenheit oder Bequemlichkeit,
lieber tagelang alles verschlimmbesser fummeln, als Ihre Systeme mal
vernünftig einzustellen... Tja, dann kann man nicht sehr viel mehr
machen als da herum zu arbeiten: Von daher ist Dein Ansatz eines
Workarounds vielleicht nicht unbedingt der schlechteste.
> Ich synchronisiere meine ~/.rc files mit GIT, möchte also
> systemspzifische hardkodierte Defaults vermeiden (wobei das ja eh
> nicht hilft, weil es ja vom Terminal abhängt).
Leider korrekt: Daher sorge ich lieber dafür die Systeme anzugleichen.
Wo das nicht geht kommt man um spezifische Hacks leider nicht herum.
> oki,
>
> Steffen
Hoffe die Mail hilft Dir etwas, lg
Freundliche Grüße / Best Regards
Lutz Willek
Mehr Informationen über die Mailingliste linux-l