Bash

Bash

Comment :

Le shell est un interpréteur de commande qui sert d’interface entre l’utilisateur et le système d’exploitation. Bash est le plus utilisé des shells, c’est celui sur lequel nous nous baserons tout au long de ce chapitre. De plus, Bash est aussi un language de programmation complet visant à simplifier et automatiser les taches quotidiennes des administrateurs.

Creation et invocation d’un script

Creation d’un script

Un script, ou fichier de commandes, est un ensemble de commandes placées dans un fichier texte. Chaque ligne de ce fichier correspond à une ligne qu’aurait pu entrer un opérateur. Un script est destiné à un interpréteur qui lit, analyse, et exécute les commandes qu’il contient. Dans le cas d’un shell-script, l’interpréteur est un des shells d’Unix (bash, sh…). Dans ce document, nous allons apprendre à écrire un script en Bourne-shell (bash ou sh). La première ligne d’un script doit spécifier le programme à appeler pour l’interpréter. Elle doit commencer par la séquence “#!” suivie d’au moins une espace puis du nom de l’interpréteur.
Pour un shell-script écrit en Bourne-shell, elle sera :
#! /bin/bash
Pour un script Perl, la première ligne sera :
#! /usr/bin/perl
Le nom d’un shell-script peut être quelconque, mais on choisit généralement :
– soit “mon script” (sans extension), pour que son nom ait l’air d’une commande Unix comme une autre.
– soit “mon script.sh” pour indiquer explicitement qu’il s’agit d’un shell-script.

Invocation d’un script

On peut exécuter un script comme toute autre commande en l’appelant par son nom. Pour cela, il faut d’une part que les droits d’exécution soient positionnés correctements : chmod +x mon_script
et, d’autre part, il faut que le chemin du fichier appartienne à la variable d’environnement PATH (sinon, vous devriez systématiquement préciser le chemin de votre script pour l’exécuter. Une autre façon d’exécuter un script, et qui aboutit au même résultat, est d’invoquer son interpréteur avec le nom du script en paramètre (exemple : “sh mon script.sh”).

Il faut savoir que, lancé ainsi, un script s’exécute dans un shell secondaire (sous-shell), totalement indépendant du shell qui l’a appelé Ceci aura pour effet d’annuler toute modification de l’environnement du script (changement de chemin avec cd, création ou modification de variables, etc…) dès lors que le script sera terminé.

Pour éviter cela, et donc permettre à un shell-script de modifier l’environnement de votre shell, il suffit d’appeler ce script grâce à la commande source (ou ‘.’). . mon_script ou source mon_script Toutes les commandes du script sont alors exécutées dans le shell actuel.

Premier exemple de script

#! /bin/bash
echo hello world
Execution de notre script :
$ ./hello.sh
Hello world
Une autre facon de le lancer, cette fois-ci en appelant le script par l’interpreteur :
$ bash hello.sh
Hello World
Enfin de cette facon le script est lancé dans le shell en cours :
$ . hello.sh ou source hello.sh

Hello World

Commentaires et taches de fond

Chaque ligne commençant par un # ne sera pas traitée comme une commande mais comme un commentaire par le shell.
#! /bin/bash
#debut du script
echo hello world
#fin du script
De plus, toute commande suivie du caractère ‘&’ s’executera en tâche de fond (arrière plan).

Valeur retournée par un shell-script a la fin de son execution

C’est la valeur retournée par la dernière commande exécutée dans le script. Par convention, une valeur de retour égale à 0 signifie que le script s’est bien déroulé. Inversement, toute autre valeur indique une erreur. De plus, on peut fixer cette valeur par la commande :
exit n
Dans ce cas, c’est n qui est retourné.
Comme pour toute commande, la valeur de retour d’un script peut être récupérée dans la variable $?.

Commandes d’un shell script

Commandes simples

Dans un script, on peut employer toute commande exécutable par l’utilisateur :
– un mot-clé appartenant au Bourne-shell (exemple : if, case, …)
– une commande interne (builtin) au Bourne-shell (exemple : echo, umask,…)
– une fonction définie par l’utilisateur avec le mot-clé function
– une commande externe (commande appartenant aux chemins de la variable PATH).
Pour savoir d’où provient une commande, on peut utiliser type.