Gnome-Terminal rapporte que $ TERM est `xterm`

21

Sur une nouvelle installation d'Ubuntu 12.10, le gnome-terminal par défaut signale que $ TERM est xterm alors qu'il devrait vraiment rapporter xterm-256color. Quelle est la meilleure façon de changer cela? J'évite de mettre cela dans mon .bashrc car cela ne fait que poser des problèmes.

Freddy
la source
2
Vous voulez expliquer pourquoi xterm a tort? Afaik, nous avons tous xterm. En plus de cela: souciez-vous également d'expliquer pourquoi mettre ceci dans bashrc demande des ennuis?
Rinzwind
4
xtermest faux car la plupart des applications ne fonctionneront pas en mode 256 couleurs à moins que ce ne xterm-256colorsoit ou screen-256color(vim et tmux étant les principales qui me tiennent à cœur). Comme @Freddy, je préférerais ne pas les définir dans mon profil shell, car je peux me connecter à partir d'un type de terminal différent via SSH, et parce que c'est vraiment le travail de l'émulateur de terminal de définir cela. Je suis étonné que gnome-terminal ne fournisse pas plusieurs émulations.
Jim Stewart
3
vte-0.40 (qui apparaîtra probablement dans Ubuntu 15.10) a changé la valeur par défaut en xterm-256colors.
egmont

Réponses:

17

Vous avez été bien avisé de ne pas modifier vos scripts de démarrage, spécialement ~/.bashrc. Toute "détection de terminal" utilisant current $TERMou $COLORTERMin ~/.profilen'est qu'une supposition et peut, comme vous l'avez dit, causer des problèmes lors de l'utilisation d'autres terminaux (par exemple, Putty ou xterm). L'émulateur de terminal est censé être défini $TERM, et cela ne doit pas être modifié depuis l'intérieur du shell.

Le terminal Gnome, AFAIK, n'offre pas de configuration pour changer son TERM, mais il vous permet de changer votre commande de démarrage, et c'est tout ce dont vous avez besoin. Voici l'astuce:

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

Utilisez ensuite la commande suivante:

env TERM=xterm-256color /bin/bash

Remplacez simplement /bin/bashvotre coque préférée si elle est différente. Et non, vous ne pouvez pas utiliser "$SHELL"dans cette ligne pour la détection automatique du shell;) Vous devez le coder en dur

MestreLion
la source
Il existe une option dans ces paramètres pour "Lorsque la commande se termine:". Les options sont «Quitter le terminal», «redémarrer la commande» et «maintenir le terminal ouvert». Que dois-je sélectionner?
Caleb Jay
@CalebJay: selon votre préférence, cette option n'est pas liée aux couleurs des terminaux. Que faire lorsque la commande se termine est purement une question de préférence.
MestreLion
12

Pour se connecter avec un terminal qui ne peut pas faire 256 couleurs.

Il serait bien préférable de détecter le terminal spécifiquement avec $COLORTERM. Recherchez gnome-terminal, xfce4-terminal, etc., puis définissez la $TERMvariable sur xterm-256color.

Je le fais avec:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi
Jordan
la source
4
Sachez simplement que Gnome Terminal à partir de 3.13 ne se configure COLORTERMplus.
MestreLion
2
Pour les versions qui ne définissent plus, COLORTERMvous pouvez compter VTE_VERSION.
egmont
6

Bien qu'il soit vrai que terminfo a xterm + 256color ( /usr/share/terminfo/x/xterm+256color), termcap a juste xterm ( /usr/share/vte/termcap/xterm), donc le changement $TERMne devrait pas être conseillé.

Quoi qu'il en soit, $TERMn'est pas défini par gnome-terminal, mais par vte. La valeur par défaut de cette variable d'environnement peut être modifiée au moment de la compilation (en donnant une option au script de configuration) ou en appelant la vte_pty_set_term()fonction. En regardant les sources de gnome-terminal, je vois que cela vte_pty_set_termn'est jamais appelé, donc je peux dire qu'il n'y a aucun moyen de modifier $TERMen modifiant les paramètres de gnome-terminal.

Ce que vous devez faire est de placer le morceau de code suivant dans votre ~/.profile:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi
Andrea Corbellini
la source
==est une syntaxe bash uniquement, ne l'utilisez pas pour les extraits destinés à être fournis par sh(ce qui est le cas ~/.profiledans les DE). De plus, la syntaxe "x $ .." n'est pas nécessaire car vous citez correctement l'extension var.
MestreLion
@MestreLion: n'hésitez pas à modifier ma question.
Andrea Corbellini
J'ai essayé, mais AU exige que les changements soient supérieurs à 6 caractères, d'où le commentaire
MestreLion