Modifier le shell par défaut sur Ubuntu avec chsh

Présentation générale

Sous les systèmes GNU/Linux, l’interpréteur de commandes attribué à un compte utilisateur conditionne l’ensemble de ses sessions de travail interactives. Ce tutoriel décortique le fonctionnement interne de la commande chsh (change shell), son interaction étroite avec /etc/shells et /etc/passwd, tout en illustrant pas à pas le passage vers un environnement moderne comme Zsh à l’aide de captures de terminal dédiées.

Identification de l’interpréteur actif et consultation des shells autorisés

L’évaluation de la variable d’environnement SHELL permet de déterminer immédiatement l’interpréteur assigné à la session en cours :

echo $SHELL

L’affichage en console confirme que le compte connecté exploite actuellement /bin/bash comme invite de commande par défaut.

Vérification de la variable SHELL

Afin de préserver la sécurité de la machine, le système interdit l’affectation arbitraire de binaires non contrôlés. La liste blanche des shells de connexion officiellement approuvés se consulte via le fichier /etc/shells :

cat /etc/shells

Ce fichier recense l’ensemble des chemins absolus valides, notamment /bin/sh et /bin/bash, utilisables sans restriction par les utilisateurs.

Consultation du fichier etc shells

Déploiement de Zsh et validation de son éligibilité système

Pour notre mise en pratique, nous allons installer un interpréteur alternatif très populaire, zsh, via le gestionnaire de paquets APT :

sudo apt-get update -qq && sudo apt-get install -y zsh

Installation de zsh avec apt-get

Une fois les paquets déployés, vérifions l’emplacement exact où réside l’exécutable grâce à l’utilitaire which :

which zsh

Le système indique le chemin /usr/bin/zsh, confirmant la présence opérationnelle du binaire.

Localisation du binaire zsh

Avant de procéder à la bascule, assurons-nous que cette nouvelle option figure bien parmi les choix reconnus dans /etc/shells :

grep -E 'bash|zsh' /etc/shells

La présence conjointe de /bin/zsh et /usr/bin/zsh dans ce listing garantit que l’utilitaire chsh acceptera ce shell sans lever de refus d’authentification ou de conformité.

Contrôle de conformité de zsh dans etc shells

Configuration du nouveau shell par défaut à l’aide de chsh

Identifions tout d’abord le nom du compte utilisateur exécutant ces manipulations à l’aide de id -un :

id -un

La commande renvoie l’identifiant root, confirmant le privilège de la session en cours.

Identification du compte utilisateur courant

Nous pouvons désormais réassigner le shell par défaut du compte vers zsh au moyen du commutateur -s, dynamiquement combiné au résultat de which :

chsh -s $(which zsh)

L’exécution s’achève silencieusement, signalant que le point d’entrée vers /usr/bin/zsh a été enregistré avec succès.

Modification du shell avec chsh

Pour vérifier la prise en compte au niveau du système, consultons la ligne relative à notre profil dans la base des utilisateurs /etc/passwd :

grep "^$(whoami):" /etc/passwd

Le septième et dernier champ de l’enregistrement affiche désormais /usr/bin/zsh, certifiant que les prochaines ouvertures de session basculeront automatiquement sur Zsh.

Vérification de la mise à jour dans etc passwd

Mécanisme sous-jacent et procédure de réinitialisation vers Bash

Comprendre chsh, c’est réaliser qu’il agit comme une interface sécurisée modifiant le champ terminal du fichier /etc/passwd tout en validant les droits via /etc/shells. Une fois l’expérimentation terminée, la restauration vers bash s’effectue en fournissant simplement la cible d’origine :

chsh -s /bin/bash

L’opération se conclut sans incident, réinstaurant le shell traditionnel.

Restauration du shell bash d origine

Une dernière lecture de /etc/passwd permet de valider le retour à la normale :

grep "^$(whoami):" /etc/passwd

La référence /bin/bash réapparaît en fin de ligne, attestant que l’environnement utilisateur d’origine a été rétabli de façon propre et sécurisée.

Validation finale de la restauration dans etc passwd

Vous disposez à présent d’une maîtrise complète de l’utilitaire chsh sur Ubuntu pour personnaliser vos sessions de terminal et adapter vos outils en toute sérénité.