Comment changer de Shell

Après avoir passer en revu quelques avantage de ZSH, voici comment changer de Shell (en tout cas sous Fedora).

La solution simple

La meilleure solution consiste à passer par la commande de modification des utilisateurs : usermod

Le man usermod nous apprend en effet que cette puissante commande peut modifier le shell par défaut d’un utilisateur.

Exemple pour mon utilisateur edouard, j’aimerais avoir ZSH :

edouard@localhost $ usermod -s /usr/bin/zsh edouard

Bien sûr, il faudra des droits privilégiés pour changer le shell d’un autre utilisateur.

La solution hardcore

Cette solution fonctionne sur quasiment toutes les distributions Linux, ainsi que sur les Unix.

C’est la solution la plus rapide, qui nécessite des droits privilégiés (via sudo ou autres), et consiste à modifier directement le fichier /etc/passwd.

Attention donc à ne pas se tromper. Un mauvais shell, une faute de frappe quelques part, et vous pouvez dire adieu à toute connexion.

Cette solution est donc recommandée qu’aux utilisateurs expérimentés. Nous verrons après, pour terminer, une dernière méthode plus propre, plus sûre.

Dans /etc/passwd, les lignes correspondent à des utilisateurs (système ou autres). Chaque ligne est découpée en champs par un séparateur qui est le « : ». Le 1er champ est l’identifiant de connexion. Le Login; et sur cette ligne, il faudra éditer le dernier champ, celui correspondant au shell de session.

Par défaut, le shell doit être /usr/bin/bash. Après avoir installé ZSH par ex, il faut indiquer le chemin complet (et correct) vers le shell en question. Toujours en suivant notre exemple avec ZSH, il faudra donc avoir /usr/bin/zsh.

Donc ma ligne :

edouard:x:1000:1000:Edouard:/home/edouard:/bin/bash

devient

edouard:x:1000:1000:Edouard:/home/edouard:/usr/bin/zsh

Petit conseil ici, ne fermez pas votre session tout de suite, ouvrez en plutôt une nouvelle pour voir si tout ce passe bien.

A noter aussi, que seuls les shells listés dans le fichier /etc/shells permettront vraiment d’ouvrir une session.

La solution alternative propre

Elle consiste, avec votre utilisateur actuel, à utiliser la commande spécifique pour changer de shell : chsh

edouard@localhost $ chsh
Modification d'interpréteur pour edouard.
Nouvel interpréteur [/usr/bin/bash]

Cette commande vous demandera le chemin du nouveau shell à utiliser. En cas d’erreur dans le chemin, elle ne fera rien. C’est donc plus sûr.

Pour plus d’information :

man chsh

Le soucis, malgré que ce soit la commande « historique » dédiée au changement de shell, c’est que cette commande n’est pas installée par défaut sur Fedora. Pour en disposer :

sudo dnf install util-linux-user

Et voilà.