Wie wird der Standardwert für die TERM-Shell-Variable festgelegt?

13

Nach dem Upgrade auf Maverick habe ich meine TERM-Variable auf 'dumm' gesetzt. Dies passiert nicht mit demselben Home-Verzeichnis, das von Lucid ausgeführt wird, und ich habe nichts im Zusammenhang mit TERM manuell geändert.

Irgendeine Idee, woher die TERM-Variable gesetzt werden soll?

João Pinto
quelle

Antworten:

13

Angenommen, Sie stellen mit Putty eine Remoteverbindung von Windows zu Ihrem Ubuntu her, um die Aussagen von Gilles zu erläutern.

In den Putty-Konfigurationsoptionen gibt es unter Connection-> Data eine Einstellung namens terminal-type string. Sie können dort Ihren TERM festlegen und Putty weist SSH an, diese Umgebungsvariable festzulegen. Irgendwann danach wird Ihre Shell ausgeführt, wahrscheinlich / bin / bash, und sie bezieht ihre Umgebung von ihrem übergeordneten Prozess, wahrscheinlich dem sshd-Prozess.

Das Gleiche gilt, wenn Sie von einer entfernten Linux-Box aus ssh verwenden. Es ist nur so, dass die lokale Umgebungsvariable TERM über ssh an die entfernte Verbindung übergeben wird.

Bei einem Terminalemulator ist es Aufgabe des Terminalemulators, die Umgebungsvariable TERM festzulegen. zB getty setzt TERM auf "linux" und gibt einen Shell-Prozess aus (/ bin / bash). oder gnome-terminal setzt TERM auf "xterm" und gibt einen Shell-Prozess aus.

Jay _silly_evarlast_ Wren
quelle
Ich habe es überprüft und Gnome-Terminal funktioniert gut, es ist wirklich ein "Emulator" -Fehler. Ich benutze Terminator. Vielen Dank
João Pinto
9

Um Ihre Frage wörtlich zu beantworten, muss der Terminal-Emulator gesetzt sein $TERM .¹ setzen

Um Ihr Problem zu lösen, müssen Sie mindestens wissen, welchen Terminalemulator Sie verwenden. Es könnte ein Fehler oder eine falsche Konfiguration im Terminal - Emulator oder ein Problem mit dem Shell - Startdateien sein (wahrscheinlich ~/.bashrc, aber vielleicht ~/.bash_profile, /etc/bashrc, /etc/profile, ...).

¹ Angenommen, Sie verwenden kein Hardware-Terminal. dann wäre es das Argument getty, ab inittab(ältere Releases mit SysVinit) oder /etc/init/tty*.conf(Ubuntu ≥9.10, mit Upstart) aufzurufen.

Gilles 'SO - hör auf böse zu sein'
quelle
2
getty wird nicht von inittab aufgerufen, Ubuntu hat kein inittab mehr! Die Konsolen werden von /etc/init/tty*.conf
LassePoulsen
4
Ich glaube, du bekommst ein Abzeichen für die erste Verwendung, die ich in einer Antwort von Fußnoten gesehen habe :-)
Poolie
Jetzt, da es 15.04+ ist, ist Upstart nicht mehr die Standardeinstellung (wieder) und systemd handhabt es im getty @ -Dienst. Ich gewöhne mich immer noch an diese Änderung das gleiche mit systemd zu tun ... meh !!)
osirisgothra
1

Wenn Sie das Terminal ändern möchten, überprüfen Sie die Funktionalität für Aktualisierungsalternativen.

Zum Beispiel:

update-alternatives --config x-terminal-emulator

Viele der verschiedenen Systemstandardoptionen in Ubuntu werden über diese Methode festgelegt. Ein weiterer häufiger Fall wäre ein WWW-Browser

update-alternatives --config x-www-browser
Rick
quelle