22/12/2024

Commandes et Système

Passer de Bash à Zsh

I. Présentation

Le Shell est une couche logicielle d'un système d'exploitation qui permet d’interpréter les commandes pour effectuer des actions.

Bash (Bourn Again Shell) est le Shell par défaut sur beaucoup de distribution Linux, il est très pratique, mais on peut se demander s’il n'y a pas de Shell plus intéressant ?

J'ai décidé de tester Zsh (Z Shell) par curiosité et je l'ai tout de suite adopté !

zsh.sh-600x600-600x290Les avantages de Z Shell sont multiples :

- Autocomplétion avancée
- Correction orthographique des commandes saisies
- Support avancé de Git
- Historique partagé entre les différents Shell ouverts.

 

II. Installation de Zsh

Pour installer Zsh, selon votre distribution, saisissez la commande suivante :

Ubuntu / Debian :

sudo apt-get install zsh

ArchLinux :

sudo pacman -S zsh

Fedora :

sudo yum install zsh

Vous pouvez maintenant le lancer pour essayer en lançant :

zsh

Il vous proposera d'éditer le fichier de configuration, pour ignorer, faite Entrée.

Voici Zsh sans configuration :  (il peut sembler rustre, mais on va vite le personnaliser)

zsh

III. Installation d'Oh-My-Zsh

68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6f686d797a73682f6f682d6d792d7a73682d6c6f676f2e706e67

Il existe un framework pour Zsh, appelé Oh My Zsh, il fournit de nombreux plug-ins (support de PHP, Python, PostgreSQL ...) et de nombreux thèmes (une centaine).
Son installation se fait avec une simple commande :

curl -L https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh | sh

Je vous conseille de l'installer directement après Zsh, car il permet une configuration simplifiée (grâce aux thèmes) et l'ajout de plug-ins intéressants.

Une fois "Oh My Zsh" d'installé, il suffit de redémarrer Zsh pour prendre en compte les changements. (CTRL + D puis "zsh" )

Quand on utilise Zsh, on oublie le fichier .bashrc car il est spécifique à Bash, maintenant on utilise .zshrc.

La gestion des alias se fait comme dans Bash, vous pouvez "importer" vos alias dans .zshrc avec cette structure :

alias please="sudo"

La gestion de l'environnement (proxy par exemple) se fait dans le fichier /etc/zsh/zshenv, vous pouvez ensuite ajouter les paramètres qui vont bien :

export http_proxy="http://proxy.exemple.org:8080"
export ftp_proxy="ftp://proxy.exemple.org:8080"

A. Les thèmes

Le thème par défaut est très minimaliste :

ohmy

La liste des thèmes est disponible sur GitHub.

Pour changer son thème, il faut simplement éditer .zshrc et modifier la ligne :

ZSH_THEME="robbyrussell"

Il suffit de remplacer "robbyrussel" par le nom du thème souhaité.

Un des avantages de Zsh, c'est qu'il permet de naviguer dans la liste des fichiers avec les flèches du clavier, pratique pour naviguer dans une multitude de dossiers :

cd-navigation

Pour votre info, j'utilise le thème "jreese" !

B. Les plug-ins

Sélection_006

Il existe plein de plug-ins pour Zsh, il suffit d'ajouter une ligne dans le fichier /home/user/.zshrc :

Exemple n°1 - Git :

plug-ins=(git)

Ensuite, après redémarrage de Zsh, on remarque que de nouveaux alias apparaissent (la liste est tronquée) :

gitaliaszsh

Zsh gère également l'autocomplétion des commandes git.

Exemple n°2 - Archlinux :

plug-ins=(archlinux)

Sélection_005

La liste de tous les plug-ins est disponible ici.

IV. Conclusion

Je n'avais jamais essayé d'autres Shell que Bash (sous Unix). Zsh, peut paraître un peu rebutant aux premiers abords, mais après quelques configurations, il devient mon nouveau Shell.

Si vous aussi vous souhaitez remplacer Bash par zsh, saisissez :

chsh -s /bin/zsh

Si vous souhaité allez plus loin avez Zsh, je vous conseille d'aller lire le Wiki d'ArchLinux sur le sujet : Zsh Wiki

author avatar
Valentin Ouvrard
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “Passer de Bash à Zsh

  • Yo, en effet moi aussi j’utilise zsh qui est bien plus pratique que bash. Il y a un nouveau qui a l’air super et facile, fish: http://fishshell.com/ Tu l’as déjà essayé ?

    Répondre
  • J’utilise aussi fish maintenant, il est très complet le petit détail en plus :
    Lors de saisie de commande et d’appuis sur tab il affiche entre parenthèse ce que fais la commande.

    Par contre mon .bashrc n’est pas non plus compatible avec fish…

    Répondre
  • J’aime bien zsh, je l’ai utilisé un temps, il est clair qu’il offre de gros avantages par rapport à bash, mais j’ai rapidement remplacé oh-my-zsh (qui est une usine à gaz et peux montrer des lenteurs, non seulement au premier prompt, mais aussi par la suite, pour ceux qui ont beaucoup de modules d’activés) par Prezto, qui propose à peu près la même chose (plugins, promts, etc.) mais en s’efforçant de ne pas ralentir le shell, et de rester simple à l’usage. J’utilisais le prompt « steeef ».
    Mais le problème reste que si zsh a beaucoup de possibilités, pour pouvoir les exploiter correctement il faut nécessairement installer un framework comme oh-my-zsh ou prezto. Et c’est là que le bât blesse parce que tout le boulot est fait en script shell, ce qui n’est pas terrible pour l’efficacité…
    Du coup je suis passé à fish et je dois dire que je ne le regrette pas. La philosophie de fish, c’est de fournir une expérience de shell moderne, puissant et complet, comme zsh + omz ou prezto, mais en intégrant les avancées des framework dans le code du shell et en proposant une bonne configuration par défaut. Par contre fish n’est pas POSIX, ça peut être un avantage comme un inconvénient. Personnellement ça ne me pose pas de problème, ça n’empêche pas d’écrire/d’executer ses scripts en !#/bin/bash quand on veut rester compatible. Et la documentation sur le site est bien faite et permet de scripter facilement en fish.

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.