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.
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/
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"
où 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"
où 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.
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) !
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.
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é.
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=.