Accessibility Tools

- Le blog participatif de bioinformatique francophone depuis 2012 -

Mise en place de zsh et d'un dossier .dotfiles


Introduction

Qu'est-ce que c'est que zsh ?

Il s'agit (comme nous indique aimablement sa page Wikipédia) d'un shell unix. En gros, il s'agit d'un remplaçant potentiel pour votre vénérable interpréteur bash.

Mais pourquoi se casser le beignet à installer zsh, alors que j'ai déjà bash ?

zsh a plusieurs atouts sur bash :
- Une autocomplétion avancée (incluant une correction orthographique).
- Un historique partagé entre les différents shells.
- Et surtout, le support de plugins permettant une personnalisation TRÈS agréable de son outil de travail.

Mon ancien bash à gauche, mon shell actuel à droite.
Double tab pour obtenir la doc. Notez la coloration syntaxique dans zsh.

Et du coup, c'est quoi le rapport avec un dossier .dotfiles ?

Hé bien, tant qu'à tripatouiller son interpréteur, autant en profiter pour constituer un dossier .dotfiles, c'est-à-dire un dossier contenant vos différents fichiers de configuration. Ensuite, ce dossier est mis sur votre gestionnaire de version favori, et il n'y a plus qu'à le mettre sur vos différentes stations de travail. C'est très utile quand on apprécie utiliser le même environnement de travail partout.

L'objectif de cet article est de vous présenter rapidement comment installer zsh, le configurer, et sauvegarder votre configuration dans un .dotfiles.

Installation de zsh

Mise en place

Après l'installation du paquet zsh, l'interpréteur est installé, mais il n'est pas utilisé par défaut par le système. Vous pouvez cependant l'utiliser en tapant la commande zsh dans votre shell, si vous souhaitez tester votre configuration avant d'en faire votre shell par défaut.

Pour faire de zsh votre interpréteur par défaut, il faut utiliser cette commande, puis relancer votre session pour que cela soit pris en compte :

chsh -s /bin/zsh

Si la commande chsh n'est pas disponible de base, c'est qu'il vous faut installer le paquet util-​linux-​user.

Configuration

Comme bash, zsh est configurable à partir d'un .zshrc. Si vous avez déjà un dossier .dotfiles, je vous laisse sauter directement à la partie de configuration du .zshrc, et surtout de ses plugins. Pour les autres, je vais vous montrer comment j'ai géré le mien. Attention, je ne prétends pas détenir la meilleure des méthodes !

Le dossier .dotfiles

Création du dossier

Créez un dossier .dotfiles dans votre home, et initiez un dépôt dedans (pour git, cf ici).

mkdir .dotfiles
cd .dotfiles
git init

Ensuite, il ne reste plus qu'à mettre les fichiers de configuration à l'intérieur et les faire suivre par votre gestionnaire.

Création d'un Makefile

L'idée, c'est qu'une fois que votre dossier est fait, vous n'ayez que le minimum à faire pour maintenir votre configuration à jour. Pour cela, le plus intéressant que je connaisse reste de créer un Makefile, qui contiendra toutes les commandes nécessaires.

Voici un exemple avec le mien, qui gère les 4 fichiers de configuration de mon dossier :

all: pull source

source:
 cp ~/.dotfiles/.aliases ~/.aliases
 cp ~/.dotfiles/.zshrc ~/.zshrc
 cp ~/.dotfiles/.bashrc ~/.bashrc
 cp ~/.dotfiles/.bash_profile ~/.bash_profile

pull:
 git pull

antigen:
 git clone https://github.com/zsh-users/antigen.git

install: antigen source

Ainsi, make va successivement mettre à jour le dépôt, puis sourcer les fichiers de configuration. Le make install est présent uniquement pour l'installation du dépôt sur vos autres machines, en permettant l'ajout du gestionnaire de plugin de zsh (détails dans la partie sur Antigen) avant de copier les fichiers de configuration.

Les plus attentifs d'entre vous auront remarqué qu'au lieu de créer des liens symboliques, je copie les fichiers de configuration. En fait, il m'est arrivé que les liens symboliques ne marchent pas, et j'ai préféré pallier ce soucis en copiant directement les fichiers. C'est moins propre et occupe un peu plus de place, mais bon, j'assume, tout le monde à le droit à son coté sombre et déviant !

La configuration de zsh

Le zshrc

Comme exemple, voici mon dossier .dotfiles, vous pouvez jeter un œil à mon .zshrc si vous le souhaitez.

Les alias : si ce n'est pas déjà fait, je vous conseille de mettre vos alias dans un fichier .aliases, et de pointer vers ce fichier grâce à cette commande dans votre .zshrc :

source ~/.aliases

En dehors de ça, la grande force de zsh, c'est sa customisation via des plugins. Cela est possible grâce à 2 outils.

Antigen

Antigen est le gestionnaire de plugins pour zsh, l'équivalent de Vundle ou Plug pour Vim et Neovim.
Pour utiliser Antigen, il faut copier le dépôt (dans le cadre de cet article, dans votre .dotfiles, sinon, où vous voulez) :

git clone https://github.com/zsh-users/antigen.git

Antigen peut être mis à jour avec cette commande :

antigen selfupdate

Pour mettre à jour les plugins :

antigen update

Oh-​my-​zsh

Seul, Antigen ne fait pas grand chose. C'est là qu'intervient oh-​my-​zsh, un dépôt pour gérer votre configuration. Cela contient un peu de tout, depuis des thèmes, jusqu'à des plugins faisant dire des "Chuck Norris Facts" à une vache ! Il existe d'autres dépôts, comme prezto, mais je n'ai pas encore eu l'occasion de comparer.

Le saviez-​tu ?

Pour l'installer, c'est très simple, Antigen le fait pour vous. Idem pour l'installation des plugins, et leur mise à jour !
Pour cela, rien de plus simple, rendez vous dans votre .zshrc, et écrivez :

autoload antigen

# Source vers Antigen
 source ~/.dotfiles/antigen/antigen.zsh

# Installation de oh-my-zsh
 antigen use oh-my-zsh

# différents plugins
 # support de git
 antigen bundle arialdomartini/oh-my-git
 antigen bundle git

# coloration syntaxique dans le shell
 antigen bundle zsh-users/zsh-syntax-highlighting

# theme
 antigen theme ys

antigen apply

Il ne vous restera plus qu'à chercher les plugins qui vous paraissent les plus intéressants, le thème de vos rêves, et faire des liens ou copier les fichiers de configuration dans votre /​home !

Merci aux relecteurs : eorn, Nico M., et Nisaea




Commentaires

5 réponses à “Pimp my workstation : avoir le terminal le plus classe du bureau !”

  1. Bon ben testé et adopté :] Pour l'instant tout va bien, j'ai pris le thème bira et j'aime beaucoup !

    1. Content que l'article t'ai servi ^^
      J'ai pas mal hésité entre bira et ys, mais au final j'utilise ys pour une raison toute simple : ce thème laisse une ligne vide après chaque commande, ce qui me permet de visualiser plus facilement les différents blocs.

  2. Avatar de Bastien

    Bonjour et merci pour ce post,

    j'ai besoin d'un coup de main sur l'installation d'antigen.

    j'ai suivi à la lettre la façon dont vous l'avez installé mais rien n'y fait :

    bastien@bastien-VirtualBox:~/.dotfiles$ git clone https://​github​.com/​z​s​h​-​u​s​e​r​s​/​a​n​t​i​g​e​n​.​git

    bastien@bastien-VirtualBox:~/.dotfiles$ ls -alt
    total 64
    drwxrwxr-​x 8 bastien bastien 4096 oct. 17 10:38 .git
    drwxrwxr-​x 7 bastien bastien 4096 oct. 17 10:36 antigen
    drwxrwxr-​x 4 bastien bastien 4096 oct. 17 10:34 .
    -rw-​rw-​r-​- 1 bastien bastien 371 oct. 17 10:34 .zshrc
    drwxr-​xr-​x 39 bastien bastien 32768 oct. 17 10:28 ..
    -rw-​rw-​r-​- 1 bastien bastien 330 oct. 17 10:20 Makefile
    -rw-​rw-​r-​- 1 bastien bastien 0 oct. 17 08:52 .bash_​profile
    -rw-​rw-​r-​- 1 bastien bastien 0 oct. 17 08:52 .aliases
    -rw-​r-​-​r-​- 1 bastien bastien 5067 oct. 17 08:49 .bashrc

    bastien@bastien-VirtualBox:~/.dotfiles$ antigen
    antigen : commande introuvable

    J'ai essayé de l'installer de manière classique : sudo apt-​get install zsh-​antigen
    bastien@bastien-VirtualBox:~/.dotfiles$ which antigen
    bastien@bastien-VirtualBox:~/.dotfiles$

    Je suis tombé sur ce post parlant d'un 'caveat' : https://​github​.com/​z​s​h​-​u​s​e​r​s​/​a​n​t​i​g​e​n​/​i​s​s​u​e​s​/​159
    ==> Caveats
    To activate antigen, add the following to your ~/.zshrc :

    source $(brew --prefix)/share/antigen.zsh

    J'ai ajouté la ligne à mon ~/.zshrc, j'ai source le fichier mais toujours rien…

    Je suis à court d'idées :). Merci d'avance !

    PS : Je suis actuellement sur machine virtuelle, mais j'ai le même problème sur ma machine réelle

    Bastien

    1. Bonjour Bastien,

      Exécutes-​tu la commande depuis zsh ? Ton prompt ressemble beaucoup à un prompt bash. Si ce n'est pas le cas essaye d'ouvrir une session zsh en tapant juste zsh sans arguments, et vois si le problème persiste.

      Good luck ! o/​

      1. Avatar de Bastien

        J'ai cligné des yeux à l'emplacement de la commande : chsh -s /​bin/​zsh
        Autant pour moi 🙂 merci

Laisser un commentaire

Pour insérer du code dans vos commentaires, utilisez les balises <code> et <\code>.