Cuando abro una ventana de terminal con el emulador de terminal de GNOME en la GUI del escritorio, la variable de entorno TERM de shell se predetermina al valor xterm.
Si uso CTL+ ALT+ F1para cambiar a una ventana TTY de consola y echo $TERMel valor se establece en linux.
Mi motivación para preguntar es que dentro de mi ~/.bashrcarchivo se usa una variable para determinar si se proporciona un caparazón de color o simplemente un monocromo anticuado.
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color) color_prompt=yes;;
esac
Tanto en el shell de la consola como en el shell del emulador de terminal Gnome si escribo
export TERM=xterm-color
source /.bashrc
ambas conchas cambian al modo de color (algo que me gustaría que ocurriera siempre en ambas).
¿Dónde se establecen los TERMvalores predeterminados y dónde es el mejor lugar para cambiar sus valores predeterminados, si es posible? Parece que no hay nada en la GUI del emulador de terminal para seleccionar o establecer el valor TERM predeterminado.
Pensé en agregar la línea export TERM=xterm-coloren la parte superior de mi ~/.bashrcarchivo, pero mi instinto me dice que esta no es la mejor solución y que mis búsquedas en Google todavía no me han dado una buena respuesta.
Estoy ejecutando Ubuntu 15.04 Desktop Edition (basado en Debian).

Respuestas:
En muchos lugares, dependiendo
En terminales virtuales y terminales reales, la
TERMvariable de entorno la establece el programa al que se encadenaloginy se hereda todo el camino hasta el shell interactivo que se ejecuta una vez que uno ha iniciado sesión. Donde, precisamente, esto sucede varía de un sistema a otro, y de acuerdo con el tipo de terminal.Los terminales reales, seriales, pueden variar en tipo, de acuerdo con lo que hay en el otro extremo del cable. De manera convencional, el
gettyprograma se invoca con un argumento que especifica el tipo de terminal, o se pasa elTERMprograma desde los datos de configuración del servicio de un administrador de servicios.initsistemas de van Smoorenburg , se puede ver esto en las/etc/inittabentradas, que leerán algo similar aEl último argumento paraagettyen esa líneavt100-nav, es el tipo de terminal establecido para/dev/ttyS0. Entonces,/etc/inittabes dónde cambiar el tipo de terminal para terminales reales en tales sistemas./usr/lib/systemd/system/[email protected]archivo de la unidad (/lib/systemd/system/[email protected]en sistemas no fusionados), que leeestablecer laTERMvariable en el entorno pasado aagetty. Este archivo de unidad de servicio es donde cambiar el tipo de terminal para terminales reales en tales sistemas. Tenga en cuenta que se aplica a todos los terminales reales que emplean esta plantilla de unidad de servicio. (Para cambiarlo solo por terminales individuales, se debe crear una instancia manual de la plantilla).inittoma el tipo de terminal del tercer campo de la entrada de cada terminal en la/etc/ttysbase de datos y lo estableceTERMen el entorno con el que se ejecutagetty. Entonces/etc/ttyses donde uno cambia el tipo de terminal para terminales reales en los BSD.Los terminales virtuales del kernel, como ha notado, tienen un tipo fijo. A diferencia de NetBSD, que puede variar el tipo de terminal virtual del kernel sobre la marcha, Linux y los otros BSD tienen un único tipo de terminal fijo implementado en el programa de emulación de terminal incorporado del kernel. En Linux, ese tipo coincide
linuxcon la base de datos terminfo. (La emulación de terminal de kernel de FreeBSD es unxtermsubconjunto limitado desde la versión 9.)mingettyovc-get-tty(del paquete nosh) el programa "sabe" que solo puede estar hablando con un terminal virtual, y conectan los tipos de terminal virtual "conocidos" apropiados para el sistema operativo para el que se compiló el programa./usr/lib/systemd/system/[email protected]archivo de la unidad (/lib/systemd/system/[email protected]en sistemas no fusionados), que leeestablecer laTERMvariable en el entorno pasado aagetty.Para terminales virtuales del kernel, uno no cambia el tipo de terminal. El programa emulador de terminal en el núcleo no cambia, después de todo. Es incorrecto cambiar el tipo. En particular, esto arruinará el cursor / tecla de edición de reconocimiento de secuencia CSI. Las
linuxsecuencias de CSI enviado por emulador de terminal del núcleo de Linux son diferentes a losxtermovt100las secuencias CSI enviado por los programas de emulación de terminal GUI en modo DEC VT.Su emulador de terminal GUI es uno de los muchos programas, desde el demonio SSH hasta
screen, que utiliza pseudo terminales. El tipo de terminal depende de qué programa de emulador de terminal se esté ejecutando en el lado maestro del pseudo-terminal y de cómo esté configurado. La mayoría de los emuladores de terminal GUI iniciarán el programa en el lado esclavo con unaTERMvariable cuyo valor coincida con su emulación de terminal en el lado maestro. Programas como el servidor SSH intentarán "pasar" el tipo de terminal que se encuentra en el extremo del cliente de la conexión. Por lo general, hay algún menú u opción de configuración para elegir entre las emulaciones de terminal.La mano agarradora
La forma correcta de detectar la capacidad de color no es cablear una lista de tipos de terminales en su secuencia de comandos. Hay muchos tipos de terminales que admiten color.
La forma correcta es mirar lo que dice termcap / terminfo sobre su tipo de terminal.
color = 0 si tput Co> / dev / null 2> & 1 luego prueba "` tput Co` "-gt 2 && color = 1 colores elif tput> / dev / null 2> & 1 luego prueba "` tput colors` "-gt 2 && color = 1 fiOtras lecturas
TERM. nosh Guide . Softwaresfuente
[ -x /usr/bin/tput ] && /usr/bin/tput setaf 1 >&/dev/null && color_prompt=yes. (ncurses 5.9)tput Codevuelve "capacidad terminfo desconocida" en Jessie y Xenial.tput colorsytput setaf 1ambos parecen funcionar aunque admito que no entiendo por qué .Consulte /ubuntu//a/614714/398785 para obtener una respuesta detallada sobre por qué creo que
TERM=xterm-colores un enfoque incorrecto y Ubuntu.bashrces obsoleto. Le recomiendo que vaya conTERM=xterm-256color(que es el valor predeterminado desde gnome-terminal 3.16, pero también seguro de usar con terminales gnome más antiguos), y ajuste su.bashrccorrespondiente.fuente
.bashrces obsoleto). "El .bashrc de Ubuntu está obsoleto".xterm-256colorcausahtopun error en su diseño como este en Ubuntu 18.04.