Le shell
Le shell est le programme qui gère la ligne de commande. C’est l’interface (en mode texte) entre l’utilisateur et le système. Le shell attend indéfiniment que l’utilisateur entre des commandes, et pour chacune d’elles, il tente de l’exécuter. Il est programmable, et gère des variables, fonctions, alias.
Il existe des dizaines de shells, qui ont tous, chacun à leur manière, perfectionné le shell d’origine, le Bourne shell sh.
Les plus connus sont :
-
ceux issus de Berkeley : le C-shell
csh, amélioré par la suite entcsh -
ceux issus de System V : le Korn shell
kshet le Bourne Again Shellbash.
Tous ces shells se ressemblent, mais ne sont pas 100% compatibles entre eux.
Ils ont tous amélioré à leur façon sh.
Tout ce qui fonctionne sur sh fonctionne sur les autres shells.
bash est le shell par défaut de Linux.
1. Variables
Une variable possède un nom et une valeur pouvant varier au cours du temps (d’où son nom de variable). Une variable s’initialise par :
$ x=valeur1
$ y=valeur2
La valeur d’une variable v est $v :
$ echo $x
valeur1
$ echo $y
valeur2
echo est une commande qui écrit simplement ses arguments :
$ echo "la valeur de la variable x est $x"
la valeur de la variable x est valeur1
Autre exemple :
$ w=World
$ h=Hello
$ z="$h $w !"
$ echo $z
Hello World !
Les variables sont locales au shell dans lequel elles sont créées :
à un instant t, une variable x peut valoir 1 dans un shell,
2 dans un autre,
et ne pas exister dans un autre.
Une variable disparait à la fin de la session dans laquelle elle a été créée.
Pour la rendre persistante, il est nécessaire de la recréer à chaque session (par exemple dans le profil de l’utilisateur).
En bash, la commande env liste toutes les variables définies.
Les variables avec un nom en majuscule sont, par convention, des variables prédéfinies par le système.
La variable PATH
Sa valeur est une liste de chemins séparés par le caractère : :
$ echo $PATH
/home/jaclin/bin:/usr/bin:/bin
La valeur renvoyée ci-dessus correspond donc aux 3 chemins /home/jaclin/bin, /usr/bin et /bin.
- Role de la variable
PATH -
Lorsqu’une commande est invoquée, le shell recherche l’exécutable correspondant en explorant séquentiellement cette liste de chemins. Par exemple, si l’on envoie la commande
ls,-
alors un exécutable
/home/jaclin/bin/lsest recherché ; s’il existe, alors il est exécuté, et le processus s’arrête là -
sinon, si un exécutable
/usr/bin/lsexiste, alors il est exécuté, et le processus s’arrête là -
sinon, si un exécutable
/bin/lsexiste, il est exécuté -
sinon, le message commande inconnue est renvoyé.
-
2. Contrôler l’interprétation
Certaines expressions sont interprétées par le shell :
$ echo ~
/home/jaclin
$ echo $OSTYPE
linux-gnu
$ echo *
Bureau Documents Images Musique Vidéos
mais on peut jouer sur ces interprétations avec les caractères \ (backslash), " (guillemet) et ' (quote).
Exemple :
$ echo \~ vaut ~
~ vaut /home/jaclin
$ echo \$OSTYPE vaut $OSTYPE
$OSTYPE vaut linux-gnu
$ echo \* vaut *
* vaut Bureau Documents Images Musique Vidéos
Explication : le caractère \ supprime le rôle particulier du caractère qui le suit.
De même, l’interprétation d’une chaîne de caractères varie suivant quelle est non délimitée, délimitée avec des guillemets, ou délimitées avec des quotes.
3. Alias
Un alias est un synonyme d’une autre commande. Son but est de faciliter la frapppe fréquente de commandes longues.
Un exemple classique est la commande ll qui n’est rien d’autre qu’un alias de ls -l.
La commande alias liste tous les alias définis.
Elle permet aussi de les créer.
Par exemple, l’alias ll se définit par :
alias ll="ls -l"
Comme les variables, les alias existent durant la session courante seulement. Pour les rendre persistants, il faut les recréer à chaque session (par exemple dans le profil de l’utilisateur).
4. Substitution de commande
Il s’agit de récupérer le résultat d’une commande, par exemple, obtenir la date courante pour la mémoriser dans une variable. Par exemple :
$ now=`date`
$ echo $now
jeu. 20 févr. 2025 19:06:30 CET
5. Profil utilisateur
Les lignes du fichier ~/.bashrc sont exécutées au démarrage du shell,
comme si elles avaient été frappées au clavier.
C’est donc dans ce fichier que l’on peut définir variables et alias,
pour les rendre persistants.
- Résumé
-
-
à retenir : la commande
echo -
à comprendre : la variable
PATH -
à connaitre : le fichier
~/.bashrc
-