Wie ändern Sie den Standard-TERM-Wert, der beim Anmelden der Konsole (Ubuntu) festgelegt wurde?

14578
cmcginty

Der $ TERM-Shell-Wert in Ubuntu lautet standardmäßig "xterm" für eine Konsolenanmeldung. Wie kann ich es so ändern, dass es standardmäßig auf "xterm-color" gesetzt ist? Ich frage, weil es so aussieht, ist dies der einfachste Weg, die Farbaufforderung einzuschalten.

Ich bin mir bewusst, dass Sie den TERM-Wert im .bashrc oder einem anderen Anmeldeskript zurücksetzen können, aber ich möchte den TERM-Wert eher auf einen angemessenen Standard setzen.

6
Entschuldigung, ich muss das vielleicht überprüfen. Möglicherweise war dies ein SSH-Login und nicht die Konsole. Alle Hinweise wären gut. cmcginty vor 14 Jahren 0

2 Antworten auf die Frage

9
quack quixote

Die TERM- Variable speichert den Namen eines Eintrags in der terminfo- Datenbank, mit dessen Hilfe das Betriebssystem bestimmen kann, wie Informationen auf Ihrem Terminal angezeigt werden. Der Standardwert hängt davon ab, wie Sie sich angemeldet haben.


Normalerweise bedeutet "Konsole", dass Sie sich physisch am Computer befinden und sich an einem der textbasierten virtuellen Terminals (VT1-6) anmelden.

  • Der Standardwert für TERM ist Linux (dies kann sich bei den Distributionen unterscheiden; vt100 ist eine sichere Alternative).

    • Um dies zu ändern, müssen Sie unter Ubuntu 9.10 den in /etc/init/tty1.conf definierten getty- Befehl anpassen . Dadurch wird die Einstellung für / dev / tty1 (VT1) geändert, und Sie müssen dieselben Änderungen in /etc/init/tty2.conf, ..tty3.conf usw. vornehmen, um auch die anderen virtuellen Terminals zu erhalten.

      # original getty command in /etc/init/tty1.conf exec /sbin/getty -8 38400 tty1  # new command; sets default TERM on /dev/tty1 to "foobar" exec /sbin/getty -8 38400 tty1 foobar 

Wenn Sie bei X / Gnome / KDE (VT7, 8 oder 9) angemeldet sind, verwenden Sie zumindest in diesem Zusammenhang keine Konsole. Technisch ist dies die Anmeldung bei X und die Verwendung eines Pseudo-Terminals über eine Terminalemulatoranwendung. Dadurch erhalten Sie das Fenster, das Ihre Shell und die Befehlszeile anzeigt.

  • TERM wird anfänglich von Ihrem Terminalemulator eingestellt. Es kann in den Shell-Startdateien ( ~ / .bashrc, ~ / .profile usw.) geändert werden .

    • xterm, rxvt, xterm-color, xterm-256color sind alles gängige Werte

    • Um diesen Wert zu ändern, konsultieren Sie die Dokumentation Ihres Terminalemulators. Wenn Sie beispielsweise rxvt- unicode (auch bekannt als urxvt ) verwenden, verwenden Sie die -tn termnameBefehlszeilenoption.


Wenn Sie remote angemeldet sind (über SSH oder Remote X), verwenden Sie definitiv keine Konsole in irgendeinem Kontext. Sie verwenden wieder ein Pseudo-Terminal .

  • TERM wird von dem Programm vererbt, mit dem SSH gestartet wurde:
    • SSH von einem virtuellen Linux-Terminal führt zu einem Remote- TERM von Linux .
    • SSH von einer Befehlszeile in einem X-Windows-Terminal-Emulator führt zu einem Remote- TERM-Wert des vor dem SSH-Befehl gesetzten TERM ;
    • SSH von einem Windows-System, das PuTTY verwendet, verwendet standardmäßig xterm . Dies kann jedoch in der Konfiguration von PuTTY geändert werden.
    • und jede der obigen Einstellungen kann von den Shell-Startdateien des Remote-Benutzers überschrieben werden.
2
cmcginty

Viele gute Infos hier:

man 7 term 

Ein voreingestellter TERM-Wert wird pro Zeile entweder von / etc / inittab (Linux- und System-V-ähnliche UNIXes) oder von / etc / ttys (BSD UNIXes) festgelegt. Für Workstation- und Mikrocomputer-Konsolen ist dies fast immer ausreichend.

Das nächste Problem ist, dass Ubuntu 9.10 nicht hat /etc/inittaboder /etc/ttys.

man inittab 

Der Daemon Upstart init (8) verwendet diese Datei nicht und liest stattdessen seine Konfiguration aus den Dateien in / etc / init. Siehe init (5) für weitere Details.

Unter / etc / init können Sie die tty * .conf-Dateien finden. Sie werden von getty ausgeführt. Also dann:

man getty 

term Der Wert, der für die Umgebungsvariable TERM verwendet werden soll. Dies hat Vorrang vor den Einstellungen von init (8), die von login und der Shell geerbt werden.

Das ist eine gute Info. Jetzt wissen wir, dass der Standardwert für TERM von init (8) stammt.

... schließlich gelang es mir nicht, den von init verwendeten Standard-TERM-Wert zu ändern.

dieses Manpage-Zitat beschreibt die Einstellung von TERM, wenn an der Konsole angemeldet ist; Ubuntu verwendet * upstart * anstelle des älteren * init * und definiert * tty1 * etc in Dateien wie * / etc / init / tty1.conf * quack quixote vor 14 Jahren 1