Comment la valeur par défaut de la variable shell Shell est-elle définie?
13
Après la mise à niveau vers Maverick, ma variable TERM est définie sur «stupide», cela ne se produit pas avec le même répertoire personnel exécuté à partir de Lucid et je n'ai rien modifié manuellement concernant TERM.
Une idée d'où la variable TERM devrait être définie?
Pour développer ce que dit Gilles, supposons que vous vous connectiez à distance à votre ubuntu depuis Windows à l'aide de Putty.
Dans les options de configuration du mastic, sous Connexion-> Données, il y a un paramètre appelé chaîne de type terminal. Vous pouvez y définir votre TERM et putty demande à SSH de définir cette variable d'environnement. À un moment donné, votre shell va être exécuté, probablement / bin / bash et il obtient son environnement de son processus parent, probablement le processus sshd.
La même chose est vraie si vous ssh à partir d'une boîte Linux distante, c'est juste que la variable d'environnement TERM locale est passée via ssh à la connexion distante.
Dans le cas d'un émulateur de terminal, il incombe à l'émulateur de terminal de définir la variable d'environnement TERM. Par exemple, Getty définit TERM sur "linux" et lance un processus shell (/ bin / bash). ou gnome-terminal définit TERM sur "xterm" et lance un processus shell.
J'ai vérifié et gnome-terminal fonctionne bien, c'est vraiment un bug "émulateur". J'utilise Terminator. Merci
João Pinto
9
Pour répondre à votre question littéralement, l'émulateur de terminal est censé être configuré $TERM.¹
Pour résoudre votre problème, il vous faudrait au moins savoir quel émulateur de terminal vous utilisez. Il pourrait être un bug ou une mauvaise configuration dans l'émulateur de terminal ou un problème avec les fichiers de votre shell (probablement ~/.bashrc, mais peut - être ~/.bash_profile, /etc/bashrc, /etc/profile...).
¹ En supposant que vous n'utilisez pas de terminal matériel; alors ce serait l'argument de getty, appelé depuis inittab(les anciennes versions utilisant SysVinit) ou /etc/init/tty*.conf(Ubuntu ≥9.10, utilisant Upstart).
getty n'est pas appelé depuis inittab, Ubuntu n'a plus d'inittab! Les consoles sont définies par /etc/init/tty*.conf
LassePoulsen
4
Je pense que vous obtenez un badge pour la première fois que j'ai vu des notes de bas de page dans une réponse :-)
poolie
maintenant qu'il est 15.04+ upstart n'est plus la valeur par défaut (à nouveau) et que systemd le gère dans le service getty @, je m'habitue toujours à ce changement (il figure une fois que j'ai tout appris sur upstart à l'intérieur et à l'extérieur, maintenant j'ai faire de même avec systemd ... meh !!)
osirisgothra
1
Si vous souhaitez changer de terminal, assurez-vous de vérifier la fonctionnalité de mise à jour des alternatives.
Par exemple:
update-alternatives --config x-terminal-emulator
De nombreuses options par défaut du système dans Ubuntu sont définies via cette méthode. Un autre commun serait un navigateur www
Pour répondre à votre question littéralement, l'émulateur de terminal est censé être configuré
$TERM
.¹Pour résoudre votre problème, il vous faudrait au moins savoir quel émulateur de terminal vous utilisez. Il pourrait être un bug ou une mauvaise configuration dans l'émulateur de terminal ou un problème avec les fichiers de votre shell (probablement
~/.bashrc
, mais peut - être~/.bash_profile
,/etc/bashrc
,/etc/profile
...).¹ En supposant que vous n'utilisez pas de terminal matériel; alors ce serait l'argument de
getty
, appelé depuisinittab
(les anciennes versions utilisant SysVinit) ou/etc/init/tty*.conf
(Ubuntu ≥9.10, utilisant Upstart).la source
Si vous souhaitez changer de terminal, assurez-vous de vérifier la fonctionnalité de mise à jour des alternatives.
Par exemple:
De nombreuses options par défaut du système dans Ubuntu sont définies via cette méthode. Un autre commun serait un navigateur www
la source