Le Shell est un programme fondamental dans l'environnement Linux, agissant comme une interface textuelle entre l'utilisateur et le noyau du système d'exploitation. Écrit en langage C, il permet non seulement d'exécuter des commandes interactives, mais aussi de rédiger des scripts, ce qui en fait à la fois un langage de commande et un langage de programmation. Il offre un accès direct aux services du système d'exploitation.
Qu'est-ce qu'un script Shell ?
Un script Shell est un programme ou une séquence de commandes écrites pour être interprétées par un Shell. Bien que le terme "Shell" désigne l'application elle-même (comme sh de Ken Thompson ou bash), dans le langage courant et la documentation technique, "programmation Shell" fait presque toujours référence à l'écriture de scripts Shell plutôt qu'au développement de l'interpréteur Shell.
Environnements Shell courants
Il existe plusieurs interpréteurs Shell disponibles sous Linux, chacun avec ses propres caractéristiques et syntaxes. Parmi les plus répandus, on trouve :
- Bourne Shell (
/bin/sh) - Bourne Again Shell (
/bin/bash) – Souvent la valeur par défaut sur de nombruex systèmes Linux. - C Shell (
/bin/csh) - Korn Shell (
/bin/ksh)
Ce guide se concentrera sur Bash (Bourne Again Shell), qui est largement adopté en raison de sa facilité d'utilisation, de sa richesse fonctionnelle et de sa nature libre et open-source. Il est important de noter que /bin/sh est souvent un lien symbolique vers /bin/bash sur les systèmes modernes, ce qui signifie qu'un script commençant par #!/bin/sh sera souvent exécuté par Bash.
Le shebang (#!) au début d'un script est une instruction cruciale qui indique au système quel interpréteur doit être utilisé pour exécuter le fichier. Par exemple, #!/bin/bash spécifie que le script doit être exécuté par l'interpréteur Bash situé dans /bin/bash.
Création de votre premier script Bash
Pour illustrer, créons un script simple. Ouvrez votre éditeur de texte préféré (par exemple, vi ou nano) et enregistrez le contenu suivant dans un fichier nommé bonjour_bash.sh :
#!/bin/bash
# Ce script affiche un message de bienvenue
MESSAGE="Salutations du monde Shell en français !"
DATE_DU_JOUR=$(date +"%Y-%m-%d %H:%M:%S")
echo "$MESSAGE"
echo "Nous sommes le : $DATE_DU_JOUR"
Dans cet exemple :
- La première ligne,
#!/bin/bash, est le shebang, indiquant l'interpréteur Bash. - Nous définissons une variable
MESSAGEet une variableDATE_DU_JOURqui capture la date et l'heure actuelles. - La commande
echoest utilisée pour afficher le contenu des variables sur la sortie standard.
Exécution d'un script Shell
Il existe deux méthodes principales pour exécuter un script Shell :
1. En tant que programme exécutable
Pour exécuter un script directement, vous devez d'abord lui accorder les permissions d'exécution. Ensuite, vous pouvez l'appeler depuis le terminal :
chmod +x ./bonjour_bash.sh # Donne la permission d'exécution au propriétaire et au groupe
./bonjour_bash.sh # Exécute le script
L'utilisation de ./ devant le nom du script (par exemple, ./bonjour_bash.sh) est essentielle. Elle indique au système de chercher le script dans le répretoire courant. Si vous omettez ./ et tapez simplement bonjour_bash.sh, le système cherchera le script dans les répertoires spécifiés par la variable d'environnement PATH, et ne le trouvera probablement pas s'il est dans votre répertoire de travail actuel.
2. En passant le script à l'interpréteur
Une autre méthode consiste à invoquer directement l'interpréteur Shell et à lui passer le script comme argument. Avec cette approche, le shebang (#!) en début de script est ignoré, car l'interpréteur est déjà explicitement spécifié :
/bin/bash bonjour_bash.sh
Cette méthode est utile lorsque vous souhaitez forcer un script à s'exécuter avec un interpréteur spécifique, même si le shebang en indique un autre, ou si le shebang est manquant.