Chapitre 19. Configurer le shell

1. Qu'est-ce qu'un shell ?
2. Installer et configurer Zsh

1. Qu'est-ce qu'un shell ?

Le shell est ce qui s'exécute quand vous vous logguez. C'est lui qui vous présente le prompt, qui envoie vos commandes au système, qui enregistre certaines variables. Il est encore là quand vous vous délogguez.

Vous avez un vaste choix de shells différents. Le shell par défaut sous Debian s'appelle bash. Mais il existe aussi csh, tcsh, zsh, sash

Je vais vous proposer d'installer le shell Zsh, de télécharger des fichiers de configuration et ensuite de passer de bash à zsh.

2. Installer et configurer Zsh

2.1. Installer le paquet et les fichiers de configuration

Installez le paquet zsh, qui contient le shell du même nom :

# aptitude install zsh

Remplacez les fichiers de configuration par défaut par mes fichiers de configuration :

# cd ~/fichiers-config
# cp zshrc zshenv zlogin zlogout /etc/zsh/
# cp dir_colors /etc/

ou, si vous ne suivez pas ma formation depuis le début :

% wget http://formation-debian.via.ecp.fr/fichiers-config/zshrc
% wget http://formation-debian.via.ecp.fr/fichiers-config/zshenv
% wget http://formation-debian.via.ecp.fr/fichiers-config/zlogin
% wget http://formation-debian.via.ecp.fr/fichiers-config/zlogout
% wget http://formation-debian.via.ecp.fr/fichiers-config/dir_colors
# mv zshrc zshenv zlogin zlogout /etc/zsh/
# mv dir_colors /etc/

2.2. Configurer le proxy

Si vous devez passer par un proxy pour accéder à Internet, au lieu de taper à chaque fois export http_proxy=..., vous allez éditer en root le fichier /etc/zsh/zshenv puis décommenter et personnaliser les lignes adéquates :

  • si votre proxy ne requiert pas d'authentification par login et mot de passe :

    # Proxy HTTP / FTP sans mot de passe
    export http_proxy="http://proxy.exemple.org:8080"
    export ftp_proxy="ftp://proxy.exemple.org:8080"
    
    # Ne pas passer par le proxy pour les domaines locaux
    export no_proxy="exemple.org"
    

    proxy.exemple.org est le nom dns de votre proxy et 8080 son port.

  • si votre proxy requiert une authentification par login et mot de passe :

    # Proxy HTTP / FTP avec mot de passe
    export http_proxy="http://login:password@proxy.exemple.org:8080"
    export ftp_proxy="ftp://login:password@proxy.exemple.org:8080"
    
    # Ne pas passer par le proxy pour les domaines locaux
    export no_proxy="exemple.org"
    

    proxy.exemple.org est le nom dns de votre proxy, 8080 son port, login et password votre login et mot de passe pour le proxy.

Enregistrez et quittez.

2.3. Changer de Shell

Pour changer de shell, un utilisateur doit exécuter la commande chsh et préciser où se trouve son nouveau shell. Il bénéficiera alors des fichiers de configuration par défaut que vous venez d'installer. Il pourra aussi mettre ses propres fichiers de configuration dans son home (même nom mais précédé d'un point).

Pour passer à Zsh, un utilisateur doit donc taper :

% chsh
Enter the new value, or press return for the default
    Login Shell [/bin/bash]:/bin/zsh

Pour que le changement soit effectif, il faut se déconnecter (Ctrl+d) et se relogguer. Vous pouvez alors admirer la différence (Figure 19.1) !

Figure 19.1. Bash et Zsh

Bash et Zsh

Les informations sur les comptes utilisateur sont en fait stockées dans le fichier /etc/passwd. Ce fichier se présente ainsi :

<login>:<hash du mot de passe (optionnel)>:<uid>:<gid>:<nom complet>:<répertoire personnel>:<shell>

soit par exemple pour moi :

jpountz:x:1000:1000:Adrien Grand,,,:/home/jpountz:/bin/zsh

Vous trouverez plus de détails sur le fichier /etc/passwd grâce à sa page de manuel :

% man 5 passwd

Lors d'un changement de shell, la commande chsh se charge donc de modifier l'information correspondant au shell utilisateur.

[Astuce] Astuce

Zsh propose une autocomplétion très efficace. Il s'agit d'un outil qui permet d'accélérer la saisie des commandes, en les complétant automatiquement dès qu'il n'y a plus d'ambigüité. Pour l'utiliser, il faut appuyer sur la touche Tab pendant la frappe, mais essayez plutôt :

% aptiTab insTab vimTab

2.4. Shell par défaut pour les nouveaux utilisateurs

Pour changer le shell par défaut pour les nouveaux utilisateurs, il faut modifier le fichier de configuration de la commande adduser qui sert à ajouter un utilisateur au système. En root, éditez le fichier /etc/adduser.conf avec vim :

# vim /etc/adduser.conf

Changez la ligne :

DSHELL=/bin/bash

par la ligne :

DSHELL=/bin/zsh

Enregistrez et quittez. Comme ça, quand le root rajoutera un nouvel utilisateur avec la commande :

# adduser toto

ce nouvel utilisateur aura un shell zsh bien configuré.

2.5. Qu'est-ce que le PATH ?

PATH est une variable d'environnement. Pour afficher le contenu d'une variable d'environnement, on utilise la commande echo :

% echo $PATH
/usr/local/bin:/usr/local/sbin:/bin:/usr/bin:/usr/sbin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:
/sbin:/home/alexis/bin

La variable PATH contient la liste de tous les répertoires dans lesquels le système va chercher les exécutables des commandes que vous tapez au prompt, séparés par des « : ». Par exemple, le répertoire /bin/ contient les commandes Unix de base, et vous pouvez vérifier qu'il est bien dans le PATH.

Pour modifier le PATH, éditez le fichier de configuration /etc/zsh/zshenv et ajoutez ou supprimez un répertoire à la ligne qui commence par export PATH=.