Gnome-Terminal informa que $ TERM es `xterm`

21

En una instalación limpia de Ubuntu 12.10, el terminal predeterminado de gnome informa que $ TERM es xterm donde realmente debería informar xterm-256color. ¿Cuál es la mejor manera de cambiar esto? Estoy evitando poner esto en mi .bashrc ya que eso solo es pedir problemas.

Freddy
fuente
2
¿Quiere explicar por qué xterm está mal? Afaik todos tenemos xterm. Además de eso: ¿también te importa explicar por qué poner esto en bashrc es pedir problemas?
Rinzwind
44
xtermestá mal porque la mayoría de las aplicaciones no funcionarán en el modo de 256 colores a menos que sea xterm-256coloro screen-256color(vim y tmux son las principales que me interesan). Al igual que @Freddy, preferiría no configurarlos en mi perfil de shell, porque puedo estar conectando desde un tipo de terminal diferente a través de SSH, y porque realmente es el trabajo del emulador de terminal configurar esto. Estoy sorprendido de que gnome-terminal no proporcione múltiples emulaciones.
Jim Stewart
3
vte-0.40 (que probablemente aparecerá en Ubuntu 15.10) cambió el valor predeterminado a xterm-256colors.
egmont

Respuestas:

17

Le recomendamos que no cambie sus scripts de inicio, especialmente ~/.bashrc. Toda la "detección terminal" con corriente $TERMo $COLORTERMen ~/.profileno es más que una suposición, y puede, como usted ha dicho, causa problemas al utilizar otros terminales (por ejemplo, masilla o xterm). Se supone que el emulador de terminal debe establecerse $TERM, y esto no debe cambiarse desde el shell.

El terminal Gnome, AFAIK, no ofrece una configuración para cambiarlo TERM, pero le permite cambiar su comando de inicio, y eso es todo lo que necesita. Aquí está el truco:

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

Luego use el siguiente comando:

env TERM=xterm-256color /bin/bash

Simplemente reemplácelo /bin/bashcon su caparazón preferido si es diferente. Y no, no puede usar "$SHELL"en esa línea para la detección automática de shell;) Tiene que codificarlo

MestreLion
fuente
Hay una opción en esa configuración para "Cuando el comando sale:". Las opciones son "Salir de la Terminal", "reiniciar el comando" y "mantener abierta la terminal". ¿Cuál debo seleccionar?
Caleb Jay
@CalebJay: lo que prefiera, esa opción no está relacionada con los colores del terminal. Qué hacer cuando finaliza el comando es puramente una cuestión de preferencia.
MestreLion
12

Para conectarse con un terminal que no puede hacer 256 colores.

Sería mucho mejor detectar el terminal específicamente con $COLORTERM. Busque gnome-terminal, xfce4-terminal, etc., y luego configure la $TERMvariable en xterm-256color.

Lo hago con:

if [ "$COLORTERM" = "gnome-terminal" ] || [ "$COLORTERM" = "xfce4-terminal" ]
then
    export TERM=xterm-256color
elif [ "$COLORTERM" = "rxvt-xpm" ]
then
    export TERM=rxvt-256color
fi
Jordán
fuente
44
Solo tenga en cuenta que Gnome Terminal desde 3.13 en adelante ya no se configura COLORTERM.
MestreLion
2
Para versiones que ya no están configuradas COLORTERM, puede confiar VTE_VERSION.
egmont
6

Si bien es cierto que terminfo tiene xterm + 256color ( /usr/share/terminfo/x/xterm+256color), termcap solo tiene xterm ( /usr/share/vte/termcap/xterm), por lo $TERMque no debería ser aconsejable cambiar.

De todos modos, $TERMno está configurado por gnome-terminal, sino por vte. El valor predeterminado para esa variable de entorno se puede cambiar en tiempo de compilación (dando una opción al script de configuración) o llamando a la vte_pty_set_term()función. Al observar las fuentes de gnome-terminal, veo que vte_pty_set_termnunca se llama, así que puedo decir que no hay formas de modificar $TERMeditando la configuración de gnome-terminal.

Lo que debe hacer es colocar el siguiente código en su ~/.profile:

if [ "$TERM" = "xterm" ]
then
    export TERM=xterm-256color
fi
Andrea Corbellini
fuente
==es una sintaxis de bash-only, no la use para fragmentos que se deben obtener sh(que es el caso ~/.profilede los DE). Además, la sintaxis "x $ .." no es necesaria ya que está citando correctamente la expansión var.
MestreLion
@MestreLion: siéntase libre de editar mi pregunta.
Andrea Corbellini
Lo intenté, pero AU requiere que los cambios sean más de 6 caracteres, de ahí el comentario
MestreLion