Utiliser zsh comme shell par défaut sur un Mac

À partir de macOS Catalina, Mac utilise zsh comme shell de connexion par défaut et shell interactif. Vous pouvez également définir zsh comme valeur par défaut dans les versions antérieures de macOS.

Par défaut, Mac utilise zsh ou bash comme interpréteur de ligne de commande pour le shell de connexion et le shell interactif :

zsh est hautement compatible avec le shell Bourne (sh) et généralement compatible avec bash, avec quelques différences. Pour en savoir plus sur zsh et sur son système complet d’achèvement de la ligne de commande, saisissez man zsh dans Terminal.

Modifier le shell par défaut

Que votre compte d’utilisateur soit configuré pour utiliser zsh (recommandé), bash ou un autre shell, vous pouvez modifier le shell par défaut à partir de la ligne de commande ou des réglages Utilisateurs et groupes.

À partir de la ligne de commande

Dans Terminal, saisissez $ chsh -s path, où path est l’un des chemins d’accès au shell répertoriés dans /etc/shells, comme /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh ou /bin/tcsh.

À partir des réglages Utilisateurs et groupes

Sous macOS Ventura ou une version ultérieure :

  1. Sélectionnez le menu Apple  > Réglages système, puis cliquez sur Utilisateurs et groupes dans la barre latérale.

  2. Dans la liste des utilisateurs située à droite, cliquez sur votre nom d’utilisateur ou votre image d’utilisateur tout en maintenant la touche Contrôle enfoncée, puis sélectionnez Options avancées.

  3. Saisissez votre nom d’utilisateur et votre mot de passe lorsque vous y êtes invité.

  4. Sélectionnez un shell dans le menu « Shell d’accès », puis cliquez sur OK pour enregistrer les modifications.

Dans les versions antérieures de macOS :

  1. Sélectionnez le menu Apple  > Préférences Système, puis cliquez sur Utilisateurs et groupes.

  2. Cliquez sur le verrou No alt supplied for Image, puis saisissez votre nom d’utilisateur et votre mot de passe.

  3. Appuyez sur la touche Contrôle et, tout en la maintenant enfoncée, cliquez sur votre nom d’utilisateur dans la liste des utilisateurs à gauche, puis choisissez Options avancées.

  4. Sélectionnez un shell dans le menu « Shell d’accès », puis cliquez sur OK pour enregistrer les modifications.

Utiliser un autre shell sans modifier le shell par défaut

Si vous ne souhaitez pas que Terminal utilise le shell de connexion par défaut dans les nouvelles fenêtres et les nouveaux onglets de Terminal :

  1. Ouvrez Terminal, puis sélectionnez Terminal > Réglages (ou Préférences).

  2. Dans le volet Général, sélectionnez « Commande (chemin d’accès complet) ».

  3. Dans le champ adjacent, saisissez l’un des chemins d’accès au shell répertoriés dans /etc/shells, comme /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh ou /bin/tcsh.

Si vous appelez le shell bash alors que macOS est configuré pour utiliser un autre shell, un message indiquera que le shell interactif par défaut est maintenant zsh. Pour faire disparaître cet avertissement, vous pouvez ajouter cette commande à ~/.bash_profile ou à ~/.profile :

export BASH_SILENCE_DEPRECATION_WARNING=1

Passer à une invite et à un profil zsh

Si vous utilisez un profil bash, par exemple pour définir des variables d’environnement, des alias ou des variables de chemin, vous devriez utiliser un équivalent zsh. Voici quelques exemples :

  • .zprofile est équivalent à .bash_profile et s’exécute lors de la connexion, y compris par l’entremise de SSH

  • .zshrc est équivalent à .bashrc et s’exécute pour chaque nouvelle session Terminal

Si vous utilisez .profile (profil compatible POSIX), vous pouvez faire en sorte que zsh lise automatiquement ses réglages en ajoutant la commande suivante à .zprofile :

[[ -e ~/.profile ]] && emulate sh -c 'source ~/.profile'

Vous pouvez également déplacer certains réglages d’un profil bash à un profil zsh sans modification. Par exemple, pour définir des variables d’environnement : export MY_SETTING=1.

zsh reconnaît un ensemble de spécificateurs d’invite différent de celui de bash et possède une syntaxe plus propre pour spécifier la sortie colorisée, éliminant ainsi la nécessité d’utiliser des séquences d’échappement ANSI complexes. Par exemple, voici la syntaxe d’une invite bash par défaut de .bash_profile :

export PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "

Pour convertir cette invite bash en une invite zsh lors de l’utilisation de .zprofile ou de .zshrc :

export PS1="%10F%m%f:%11F%1~%f \$ "

Consultez la page relative à man zsh pour obtenir plus d’informations.

Tester des scripts shell

Pour tester la compatibilité des scripts avec les shells compatibles avec Bourne sous macOS Catalina ou une version ultérieure, vous pouvez remplacer /var/select/sh par /bin/bash, /bin/dash ou /bin/zsh. Si vous remplacez /var/select/sh par un shell autre que bash, notez que les scripts utilisant des commandes de shell spécifiques à l’interpréteur bash risquent de ne pas fonctionner correctement.

Vous pouvez faire en sorte que zsh imite sh en exécutant la commande zsh --emulate sh.

Les renseignements sur les produits qui ne sont pas fabriqués par Apple ou sur les sites Web indépendants qui ne sont pas gérés ou vérifiés par Apple sont fournis sans recommandation ni approbation de la part d’Apple. Apple se dégage de toute responsabilité quant à la sélection, au bon fonctionnement ou à l’utilisation de sites Web ou de produits de tiers. Apple ne fait aucune déclaration et n’offre aucune garantie quant à l’exactitude ou à la fiabilité de ces sites Web de tiers. Communiquez avec le vendeur pour de plus amples renseignements.

Date de publication: