Recherche de site Web

Installation et configuration du shell Zsh sous Linux


Le Z-shell (zsh) est un shell moderne et très puissant : il incorpore et étend de nombreuses fonctionnalités d’autres shells, comme Bash. Bien qu’il puisse être utilisé comme un langage de script puissant, il est principalement destiné à une utilisation interactive, car l’une de ses caractéristiques les plus importantes est le système avancé de complétion d’onglets. Dans ce tutoriel, nous voyons comment installer zsh dans les distributions Linux les plus couramment utilisées, voir quels sont ses fichiers de démarrage et d’arrêt et comment effectuer les configurations de base.

Dans ce tutoriel, vous allez apprendre :

  • Comment installer Zsh sur les distributions Linux les plus utilisées
  • Quelle est la différence entre les shells interactifs, non interactifs, de connexion et non de connexion
  • Que sont les fichiers de démarrage et d’arrêt du Z-shell et dans quel contexte sont-ils invoqués ?
  • Comment effectuer les configurations de base de l’interpréteur de commandes
  • Comment configurer PATH lors de l’utilisation de zsh
  • Comment définir zsh comme shell par défaut

Configuration logicielle requise et conventions utilisées

Installation de Zsh

L’installation de Zsh est une tâche très facile, car il est disponible dans les dépôts officiels des distributions Linux les plus utilisées. Pour installer le paquet sur Debian ou l’un des nombreux systèmes basés sur celui-ci, nous devons exécuter :

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

Pour effectuer l’installation sur Fedora, à la place, nous utiliserions le gestionnaire de paquets dnf :

sudo dnf install zsh

Sur Archlinux, en revanche, pour installer des progiciels, nous utilisons pacman :

sudo pacman -Sy zsh

Quelques secondes et zsh devrait être installé. Avant de commencer à parler de la façon de le configurer, prenons un moment pour remarquer la distinction entre les différents « types » de shells que nous pouvons utiliser ; Cela nous aidera à comprendre le rôle des fichiers de démarrage zsh.

Type de coquilles

On peut essentiellement distinguer les types de coquilles suivants :

  • interactif
  • non interactif
  • connectez-vous
  • non-connexion

Un shell interactif, comme son nom l’indique, est ce que nous utilisons normalement lorsque nous lançons un émulateur de terminal : ses sorties d’entrée et d’erreur sont connectées audit terminal. En revanche, un interpréteur de commandes non interactif n’accepte pas les entrées de l’utilisateur. Lorsqu’une commande est lancée à partir de l’intérieur d’un script, par exemple, un shell non interactif est utilisé.

L’autre distinction que nous avons est entre les shells de connexion et les shells sans connexion. Un shell de connexion est ce qui est invoqué lorsque nous nous connectons au système via un ATS ou via ssh. Dans ce cas, nous travaillons dans un shell de connexion interactif. Un shell sans connexion, en revanche, est tout autre type de shell utilisé une fois que nous sommes connectés au système (à moins qu’un shell de connexion ne soit invoqué explicitement).

Comprendre les distinctions ci-dessus nous aidera à mieux comprendre dans quel contexte les fichiers de démarrage zsh sont utilisés. Voyons ce qu’ils sont.

Fichiers de démarrage et d’arrêt Zsh

Les fichiers de démarrage zsh à l’échelle du système sont les suivants :

  • /etc/zshenv
  • /etc/zprofile
  • /etc/zlogin
  • /etc/zshrc
  • /etc/zlogout

Chacun des fichiers ci-dessus a son équivalent par utilisateur. Les fichiers de configuration au niveau de l’utilisateur se trouvent dans le chemin d’accès au répertoire défini comme valeur pour la variable ZDOTDIR. Si la valeur de cette variable est une chaîne vide, les fichiers sont supposés se trouver dans le répertoire HOME de l’utilisateur. Les noms de fichiers de configuration par utilisateur commencent par un ., ils sont donc masqués (dotfiles) :

  • .zshenv
  • .zprofilé
  • .zlogin
  • .zshrc
  • .zlogout

Les fichiers de configuration /etc/zshenv et .zshenv sont utilisés pour définir les variables d’environnement. Ils sont toujours invoqués à chaque fois qu’une session zsh est démarrée, ils doivent donc contenir le moins de contenu possible. Seules les commandes qui ne produisent pas de sortie doivent être écrites dans ces fichiers.

Les fichiers de démarrage /etc/zprofile et .zprofile sont lus au démarrage d’une session de shell de connexion et peuvent être utilisés pour exécuter des commandes afin de configurer ce contexte spécifique. Lors de l’utilisation de shells interactifs, ils sont exécutés avant /etc/zshrc et .zshrc.

Les fichiers /etc/zlogin et .zlogin sont également invoqués lorsque les sessions de shell de connexion sont démarrées. Cependant, lors de l’utilisation de shells interactifs, ils sont exécutés après /etc/zshrc et /.zshrc. Bien qu’ils puissent être utilisés avec les fichiers « profil », ils doivent être considérés comme une alternative à ceux-ci.

Les fichiers /etc/zshrc et .zshrc sont appelés au démarrage d’une session shell interactive. Ils sont essentiellement la contrepartie des fichiers /etc/bashrc et ~/.bashrc pour le shell BASH.

Enfin, les fichiers /etc/zlogout et .zlogout sont exécutés lorsqu’une session de shell de connexion est fermée. Ce dernier est exécuté avant le premier.

Les fichiers de configuration à l’échelle du système sont lus avant leur homologue réservé à l’utilisateur, voici donc l’ordre global dans lequel les fichiers de configuration sont lus. Lors de l’utilisation de sessions shell interactives sans connexion :

  1. /etc/zshenv
  2. ~/.zshenv
  3. /etc/zshrc
  4. ~/.zshrc

Lors de l’utilisation de sessions shell interactives de connexion :

  1. /etc/zshenv
  2. ~/.zshenv
  3. /etc/zprofile
  4. ~/.zprofil
  5. /etc/zshrc
  6. ~/.zshrc
  7. /etc/zlogin
  8. ~/.zlogin
  9. ~/.zlgout
  10. /etc/zlogout

Lors de l’utilisation de sessions shell non interactives et non connectées (par exemple, lorsqu’une commande est lancée à partir d’un script) :

  1. /etc/zshenv
  2. ~/.zshenv

Première configuration de zsh

La première fois que nous démarrons une session interactive zsh shell (par exemple en exécutant zsh dans un terminal), s’il n’existe aucun fichier de configuration pour notre utilisateur, le script zsh-newuser-install est lancé. Il est destiné à nous aider à créer notre première configuration :

Comme nous pouvons le voir, pour continuer, il suffit d’appuyer sur (1). Si nous décidons de le faire, nous serons invités à sélectionner l’aspect du shell que nous voulons configurer :

Ma suggestion est de procéder aux configurations de base, puis d’examiner ce qui est généré dans les fichiers de démarrage afin de mieux comprendre comment les choses fonctionnent sous le capot. Une fois que c’est fait, nous pouvons toujours modifier les choses, par exemple, en regardant les fichiers de configuration d’autres utilisateurs stockés sur github, ou des sites similaires.

Configuration de l’historique

Pour configurer la façon dont l’historique est géré, nous devons appuyer sur (1) lorsque le menu ci-dessus est affiché. Cela nous mènerait à l’écran suivant :

La valeur de trois variables d’environnement s’affiche. Nous avons parlé de la configuration de l’historique bash dans un tutoriel précédent, de sorte que ces variables devraient nous sembler familières. Le premier, HISTSIZE, contient le nombre de lignes d’historique qui sont conservées en mémoire, le second, HISTFILE, est utilisé pour définir dans quel fichier l’historique est sauvegardé lorsque la session shell est fermée. Enfin, la valeur du troisième, SAVEHIST, est le nombre de lignes à conserver dans le fichier d’historique.

Pour modifier l’une de ces valeurs, il suffit d’appuyer sur la touche correspondante. Par exemple, pour modifier HISTSIZE, nous devons appuyer sur (1). Nous serons invités à insérer la valeur souhaitée :

Les paramètres ne sont pas enregistrés de manière permanente jusqu’à ce que nous revenions au menu principal (0) et choisissions (0) Quitter, en enregistrant à nouveau les nouveaux paramètres.

Configuration du PATH

Comme nous le savons, la variable d’environnement PATH contient la liste des répertoires dans lesquels les programmes et les exécutables sont recherchés par défaut, afin qu’ils puissent être lancés sans avoir à spécifier leur chemin absolu. La méthode que nous utilisons pour ajouter des répertoires à notre PATH lorsque nous utilisons Bash est de les lister séparés par le caractère : dans le fichier ~/.bash_profile. Par exemple, pour ajouter le répertoire ~/.local/bin à notre PATH, nous écririons :

export PATH="$HOME/.local/bin:$PATH"

Lorsque nous utilisons zsh, nous définissons notre PATH d’une manière différente. Les répertoires qui doivent être inclus sont spécifiés à l’aide d’un tableau à l’intérieur du fichier ~/.zshenv. Pour faire la même chose que nous avons fait dans l’exemple précédent, nous écririons :

path=("$HOME/.local/bin" $path)

Avec la configuration ci-dessus, un problème se poserait, car à chaque invocation du fichier .zshenv $ {HOME}/.local/bin serait ajouté au tableau, qui contiendrait de nombreux doublons. Pour résoudre ce problème, nous devons utiliser la ligne suivante avant la déclaration du tableau :

typeset -U path

Ce que fait la ligne de chemin -U, c’est simplement éviter les doublons à l’intérieur du tableau. L’élément le plus à gauche est conservé dans le tableau s’il en existe déjà un autre. Imaginons que le tableau contienne les répertoires suivants (notez le symbole % dans l’invite lorsque nous utilisons zsh) :

% echo $path
/home/egdoc/.local/bin /home/egdoc/bin /usr/local/bin

Si nous ajoutons à nouveau l’élément /usr/local/bin au début du tableau, l’ancienne occurrence est supprimée :

% typeset -U path
% path=(/usr/local/bin $path)
% echo $path
/usr/local/bin /home/egdoc/.local/bin /home/egdoc/bin

Utilisation de zsh comme shell par défaut

Pour modifier le shell de connexion par défaut d’un utilisateur, nous utilisons la commande chsh. Nous l’invoquons avec l’option -s (--shell), et passons le chemin de l’interpréteur que nous voulons utiliser comme argument. Dans notre cas, nous voulons définir /bin/zsh comme notre shell par défaut, donc nous exécutons :

chsh -s /usr/bin/zsh

Conclusions

Dans ce tutoriel, nous avons appris les bases de zsh, un shell moderne avec de nombreuses fonctionnalités telles que la complétion avancée des onglets. Nous avons vu comment l’installer sur les distributions Linux les plus utilisées, quels sont les fichiers de démarrage de zsh et dans quel contexte ils sont invoqués, comment effectuer les configurations de base du shell, comment configurer PATH avec zsh et, enfin, comment définir zsh comme shell de connexion par défaut.

Articles connexes: