Comme toujours, on va un peu parler de théorie avant de passer à la pratique, histoire de bien comprendre ce qu'on fait. Nous allons donc voir les outils qui s'offrent à nous afin de personnaliser notre shell. Notons bien que chaque utilisateur de votre système pourra personnaliser son shell comme il l'entend.
Le shell
Un shell est un logiciel fournissant une interface pour utilisateur, le plus souvent en ligne de commande. Il est donc un interpréteur de commandes et offre la possibilité d'interagir avec la machine.
On interagit donc avec le système au moyen du shell, au travers de la console ou bien d'un terminal graphique qui est une émulation de cette dernière.
Historiquement, le premier shell utilisé sous les systèmes d'exploitation de type UNIX était le bourne shell (sh) qui a évolué en d'autres versions plus performantes. Parmi les shells utilisés aujourd'hui, on rencontre
- Almquist SHell (ash)
- Bourne-Again SHell (bash)
- C SHell (csh)
- Korn SHell (ksh)
- Tenex C SHell (tcsh)
- etc.
Dans notre cas, nous utiliserons l'interpréteur de commandes bash, il est en effet le plus utilisé sur les systèmes GNU/Linux, il est rapide, simple et puissant.
Configuration de bash
Le paramétrage de notre shell bash se passe au niveau de son fichier de configuration : .bashrc.
Le point indique que le fichier est masqué, il suffit de lancer
ls -a pour qu'il révèle sa présence. Ce fichier, qui se situe dans votre répertoire personnel, est lu et exécuté par bash à chaque fois que ce dernier est lancé de façon interactive, i.e. via l'ouverture d'un terminal. Si vous vous loggez en console, c'est le fichier .bash_profile, également situé dans votre répertoire personnel, qui sera lu et exécuté.
Voici un aperçu d'un .bashrc très simple
Code : Console | # Check for an interactive session
[ -z "$PS1" ] && return
alias ls='ls --color=auto'
PS1='[\u@\h \W]\$ ' |
Il y a deux choses importantes à noter dans ce fichier, la ligne parlant d'alias ainsi que celle commençant par PS1.
Les aliases
Les aliases (pluriel de alias) sont des façons alternatives de dénommer quelqu'un ou quelque chose, au sens où tout le monde l'entend. Il n'est pas rare d'entendre l'expression AKA (pour "also known as" qui signifie "également connu comme [étant]") dans le langage courant.
Dans notre cas, c'est exactement la même chose. On fera référence à une commande en employant en pseudonyme, en quelque sorte.
Vous pouvez vous demander l'utilité d'une telle méthode, nous allons la voir immédiatement au travers d'un exemple.
Supposons que vous ayez à exécuter une commande quelques fois (si ce n'est qu'une fois, effectivement ça ne sert à rien); comme par exemple vous connecter à un serveur distant en utilisant le protocole SSH. Vous devez naturellement exécuter la commande basique suivante
Code : Console | ssh utilisateur@serveurdistant |
Même si ce n'est pas très contraignant, certaines commandes sont parfois beaucoup plus longues. On aimerait bien pouvoir les exécuter de façon plus rapide. C'est là que les aliases interviennent. On peut faire référence à cette commande à l'aide d'un alias, qu'on saisira en lieu et place de la commande initiale.
Ainsi, si on choisit l'alias "server" pour la commande ci-dessus, on lancera
Code : Console
et bash comprendra qu'on fait référence à la commande de connexion à notre serveur et l'exécutera, en conséquence. C'est assez pratique si on veut avoir à éviter de taper chaque fois une commande.
La variable d'environnement $PS1
La variable d'environnement $PS1 est affichée à chaque ligne de commande tapée, il s'agit du prompt de base :
Code : Console | [renaud@renaud-laptop ~]$ |
Typiquement, cette variable donne des informations importantes, elle affiche : [utilisateur@machine répertoireCourant]privilège dans ce cas-ci.
Nous verrons en partie pratique comment modifier la valeur de la variable $PS1, avec les conséquences que ça aura sur notre invite de commande. Nous pourrons notamment afficher la date, notre position actuelle dans l'arborescence (plus uniquement le répertoire courant) ainsi qu'une foule d'autres informations.
La variable d'environnement $PATH
Cette variable recense les répertoires où sont situés les exécutables que le shell lance lorsque vous lui adressez une commande. Ainsi, si vous voulez lister le contenu d'un répertoire, vous lancerez basiquement la commande
ls.
Bash ira consulter le contenu de la variable $PATH et ira chercher l'exécutable dans un des répertoires listés. Bien souvent, les commandes basiques sont situées dans /bin, /usr/bin, /usr/sbin : c'est le cas de la commande ls. Ces répertoires doivent donc être renseignés dans votre variable $PATH.
Notons que bash ira chercher la commande dans les répertoires
dans l'ordre précisé.
Ainsi, si vous voulez exécuter la commande
dhcpcd qui se situe au sein du répertoire /sbin et que votre variable $PATH contient, dans l'ordre, les répertoires /bin, /usr/bin, /sbin, bash tentera d'abord d'aller chercher l'exécutable associé dans /bin. Voyant qu'il ne s'y trouve pas, il passera au répertoire cible suivant : /usr/bin. Vu qu'il n'y est pas non plus, il finira par scanner le répertoire /sbin, au sein duquel il trouvera l'exécutable approprié.
Cette variable nous évite d'avoir à préciser systématiquement le chemin absolu entier vers la commande. On peut donc lancer ls à la place de /bin/ls, même si ça aurait fonctionné aussi bien.
Avant toute manipulation, pensez à sauvegarder le contenu de votre fichier .bashrc, on ne sait jamais.