web-dev-qa-db-fra.com

Pourquoi mon shell par défaut de / etc / passwd n'est-il pas démarré par les terminaux dans une session Unity?

J'essaie de définir le poisson comme ma coquille par défaut. Il est installé sur le système via apt-get et est listé dans /etc/shells:

> which fish
/usr/bin/fish
> grep fish /etc/shells
/usr/bin/fish

J'ai utilisé chsh pour passer de Bash à poisson:

> chsh -s /usr/bin/fish

Et mon shell par défaut a été modifié dans /etc/passwd:

> grep "myusername" /etc/passwd
myusername:x:1000:1000:Oh Spite,,,:/home/myusername:/usr/bin/fish

Impressionnant. Puis je me suis déconnecté et redémarré. Les shells de connexion (par exemple, les ATS virtuels et SSH) commencent maintenant à pêcher.

Et pourtant, lorsque je démarre un terminal avec gnome-terminal ou urxvt, une session bash est lancée. De plus, la variable Shell est toujours définie sur /bin/bash.

Fait intéressant, Terminator utilise du poisson comme shell par défaut. Mais même dans cette session, Shell est défini sur /bin/bash. Si je lance urxvt depuis Terminator, urxvt démarre une session Bash.

Que dois-je faire d'autre pour changer mon Shell par défaut en poisson?

(Voir aussi cette question , mais ce n'est pas un doublon car j'ai suivi ces instructions et redémarré. Plusieurs fois maintenant. )

5
ohspite

La plupart des terminaux (au moins gnome-terminal, urxvt et XTerm, par exemple) démarrés dans un environnement de bureau tel que Unity utilisent la variable d'environnement Shell pour sélectionner le shell lors de leur lancement.

Shell devrait automatiquement être défini sur votre shell par défaut répertorié dans /etc/passwd, mais la variable peut être remplacée lorsque vous vous connectez. Assurez-vous de ne pas avoir défini Shell=/bin/bash ou quelque chose de similaire dans un fichier affectera toute votre session de bureau. Ces fichiers incluent:

  • ~/.profile
  • ~/.pam_environment
  • /etc/environment
  • peut-être d'autres fichiers édités par les utilisateurs Ubuntu moins souvent, tels que /etc/profile

De plus, si des scripts tels que ~/.bashrc ou ~/.bash_profile sont appelés par ces autres fichiers de démarrage et qu'il existe une ligne export Shell=/bin/bash, elle affectera également la totalité de la session de bureau.


Je sais que c'est acceptable/encouragé, mais je déteste toujours répondre à ma propre question. Néanmoins, cela pourrait être utile à quelqu'un à l'avenir. Merci à @heemayl et @muru de m'aider à enquêter.

3
ohspite

Pour définir fish comme shell par défaut pour gnome-terminal, à partir de gnome-terminal, accédez à:

Edit > Profile Preferences

puis allez à l'onglet Title and Command, vous obtiendrez:

before

Changez le comme:

after

Maintenant, chaque fois que vous démarrez une nouvelle instance de gnome-terminal, fish sera démarré à la place de bash.

1
heemayl