¿Cómo se establece el valor predeterminado de la variable de shell TERM?
13
Después de actualizar a Maverick, tengo mi variable TERM configurada como 'tonta', esto no sucede con el mismo directorio de inicio que se ejecuta desde Lucid y no cambié manualmente nada relacionado con TERM.
¿Alguna idea de dónde se espera que se establezca la variable TERM?
Para dar más detalles sobre lo que dice Gilles, supongamos que se está conectando remotamente a su ubuntu desde Windows utilizando Putty.
En las opciones de configuración de masilla, en Conexión-> Datos hay una configuración llamada cadena de tipo terminal. Puede configurar su TERM allí y putty le indica a SSH que establezca esa variable de entorno. En algún momento después de eso, su shell se ejecutará, probablemente / bin / bash y obtendrá su entorno de su proceso padre, probablemente el proceso sshd.
Lo mismo es cierto si ssh desde un cuadro de Linux remoto, es solo que la variable de entorno TERM local se pasa a través de ssh a la conexión remota.
En el caso de un emulador de terminal, el trabajo del emulador de terminal es establecer la variable de entorno TERM. Por ejemplo, getty establece TERM en "linux" y bifurca un proceso de shell (/ bin / bash). o gnome-terminal establece TERM en "xterm" y bifurca un proceso de shell.
Lo he comprobado y gnome-terminal funciona bien, es realmente un error de "emulador". Estoy usando terminador. Gracias
João Pinto
9
Para responder a su pregunta literalmente, se supone que se debe configurar el emulador de terminal $TERM.
Para resolver su problema requeriría al menos saber qué emulador de terminal utiliza. Podría ser un error o una mala configuración en el emulador de terminal o un problema con los archivos de su shell de inicio (probablemente ~/.bashrc, pero posiblemente ~/.bash_profile, /etc/bashrc, /etc/profile, ...).
¹ Asumiendo que no estás usando una terminal de hardware; entonces sería el argumento de getty, llamado desde inittab(versiones anteriores usando SysVinit) o /etc/init/tty*.conf(Ubuntu ≥9.10, usando Upstart).
getty no se llama desde inittab, ¡Ubuntu ya no tiene un inittab! Las consolas están definidas por /etc/init/tty*.conf
LassePoulsen
44
Creo que obtienes una insignia para el primer uso que he visto de notas al pie en una respuesta :-)
poolie
ahora que tiene 15.04 o más, ya no es el valor predeterminado (de nuevo) y systemd lo maneja en el servicio getty @, todavía me estoy acostumbrando a ese cambio (parece que una vez que aprendí todo sobre el arranque y el arranque, ahora tengo hacer lo mismo con systemd ... meh !!)
osirisgothra
1
Si desea cambiar el terminal, asegúrese de revisar la funcionalidad de actualización de alternativas.
Por ejemplo:
update-alternatives --config x-terminal-emulator
Muchas de las diversas opciones predeterminadas del sistema en Ubuntu se configuran mediante este método. Otro común sería un navegador www
Para responder a su pregunta literalmente, se supone que se debe configurar el emulador de terminal
$TERM
.Para resolver su problema requeriría al menos saber qué emulador de terminal utiliza. Podría ser un error o una mala configuración en el emulador de terminal o un problema con los archivos de su shell de inicio (probablemente
~/.bashrc
, pero posiblemente~/.bash_profile
,/etc/bashrc
,/etc/profile
, ...).¹ Asumiendo que no estás usando una terminal de hardware; entonces sería el argumento de
getty
, llamado desdeinittab
(versiones anteriores usando SysVinit) o/etc/init/tty*.conf
(Ubuntu ≥9.10, usando Upstart).fuente
Si desea cambiar el terminal, asegúrese de revisar la funcionalidad de actualización de alternativas.
Por ejemplo:
Muchas de las diversas opciones predeterminadas del sistema en Ubuntu se configuran mediante este método. Otro común sería un navegador www
fuente