Gnome-Terminal meldet, dass $ TERM "xterm" ist

21

Bei einer Neuinstallation von Ubuntu 12.10 meldet das Standard-Gnome-Terminal $ TERM als xterm, wo es eigentlich xterm-256color melden sollte. Was ist der beste Weg, dies zu ändern? Ich vermeide es, dies in mein .bashrc zu schreiben, da es nur um Ärger bittet.

Freddy
quelle
2
Möchten Sie erklären, warum xterm falsch ist? Afaik wir alle haben xterm. Abgesehen davon: Wollen Sie auch erklären, warum es Probleme macht, dies in bashrc abzulegen?
Rinzwind
4
xtermist falsch, weil die meisten Anwendungen im 256-Farben-Modus nur funktionieren, wenn es xterm-256coloroder ist screen-256color(vim und tmux sind die wichtigsten, die mir wichtig sind). Wie bei @Freddy würde ich es vorziehen, diese nicht in meinem Shell-Profil festzulegen, da ich möglicherweise eine Verbindung von einem anderen Terminaltyp über SSH herstelle und es in Wirklichkeit die Aufgabe des Terminalemulators ist, dies festzulegen. Ich bin erstaunt, dass das Gnome-Terminal nicht mehrere Emulationen bietet.
Jim Stewart
3
vte-0.40 (welches wahrscheinlich in Ubuntu 15.10 erscheinen wird) hat den Standard auf geändert xterm-256colors.
egmont

Antworten:

17

Sie waren gut beraten, Ihre Startskripte nicht speziell zu ändern ~/.bashrc. Jede "Terminalerkennung" unter Verwendung von "Current" $TERModer " $COLORTERMIn" ~/.profileist nur eine Vermutung und kann, wie Sie sagten, bei der Verwendung anderer Terminals (z. B. Putty oder xterm) Probleme verursachen. Der Terminal-Emulator sollte festgelegt werden $TERM, und dies sollte nicht innerhalb der Shell geändert werden.

Das Gnome-Terminal AFAIK bietet keine Konfiguration zum Ändern der Konfiguration an. TERMSie können jedoch Ihren Startbefehl ändern, und das ist alles, was Sie benötigen. Hier ist der Trick:

Profile Preferences => Title and Command => Run a custom command instead of my shell

Dann benutze den folgenden Befehl:

env TERM=xterm-256color /bin/bash

Ersetzen /bin/bashSie es einfach durch Ihre bevorzugte Schale, wenn es anders ist. Und nein, Sie können "$SHELL"diese Zeile nicht für die automatische Shell-Erkennung verwenden;) Sie müssen sie hart codieren

MestreLion
quelle
In diesen Einstellungen gibt es eine Option für "Beim Beenden des Befehls:". Die Optionen sind "Terminal verlassen", "Befehl neu starten" und "Terminal offen halten". Welches soll ich auswählen?
Caleb Jay
@CalebJay: Welche Option Sie bevorzugen, hängt nicht mit den Terminalfarben zusammen. Was zu tun ist, wenn der Befehl endet, ist eine reine Präferenzsache.
MestreLion
12

Für die Verbindung mit einem Terminal, das keine 256 Farben unterstützt.

Es wäre weitaus besser, das Terminal gezielt mit zu erkennen $COLORTERM. Geben Sie für gnome-terminal, xfce4-Terminal, etc, und dann setzen Sie die $TERMVariable xterm-256color.

Ich mache es mit:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi
Jordan
quelle
4
Beachten Sie jedoch, dass Gnome Terminal ab 3.13 nicht COLORTERMmehr aktiviert ist.
MestreLion
2
Für Versionen, auf die COLORTERMSie sich nicht mehr verlassen können VTE_VERSION.
Egmont
6

Obwohl terminfo xterm + 256color ( /usr/share/terminfo/x/xterm+256color) hat, hat termcap nur xterm ( /usr/share/vte/termcap/xterm), so dass eine Änderung $TERMnicht ratsam sein sollte.

Wie auch immer, $TERMwird nicht von gnome-terminal gesetzt, sondern von vte. Der Standardwert für diese Umgebungsvariable kann entweder zur Kompilierungszeit geändert werden (mit einer Option für das configure-Skript) oder durch Aufrufen der vte_pty_set_term()Funktion. Wenn ich mir die Quellen von gnome-terminal ansehe, sehe ich, dass diese vte_pty_set_termniemals aufgerufen werden, so dass ich sagen kann, dass es keine Möglichkeiten gibt, Änderungen $TERMdurch Bearbeiten der Einstellungen von gnome-terminal vorzunehmen.

Was Sie tun müssen, ist, das folgende Stück Code in Ihrem zu platzieren ~/.profile:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi
Andrea Corbellini
quelle
==Dies ist eine reine Bash-Syntax. Verwenden Sie sie nicht für Snippets, die als Quelle dienen sollen sh(wie dies bei ~/.profileDEs der Fall ist ). Außerdem wird die Syntax "x $ .." nicht benötigt, da Sie die var-Erweiterung korrekt in Anführungszeichen setzen.
MestreLion
@ MestreLion: zögern Sie nicht meine Frage zu bearbeiten.
Andrea Corbellini
Ich habe es versucht, aber AU erfordert Änderungen von mehr als 6 Zeichen, daher der Kommentar
MestreLion