Scripting BASH



--Téléchargez Scripting BASH en PDF --


Le Shell

Un shell est un interpréteur de commandes, c’est-à-dire un programme qui sert d’intermédiaire entre lutilisateur et le système.

Un shell exécute une boucle infinie sur les actions suivantes :

  • Lecture dune ligne
  • Interprétation de cette ligne comme une demande d’exécution dun programme avec des paramè
  • Lancement de ce programme avec passage de paramètres.

Le shell est bien plus quun simple interpréteur de commandes, il sagit dun véritable environnement de programmation, permettant de définir des variables, des fonctions, des instructions complexes et des programmes complets quon appelle des scripts shell.

Les différents shell

Il existe plusieurs shells dans le monde Unix. Les plus connus sont sh, csh, ksh et tcsh. Les deux shells de base sont sh et csh, les shells ksh et tcsh sont respectivement des extensions de sh et csh. Plus récent, le bash est une évolution sur shell sh, son nom provient de l’abréviation de langlais « Bourne Again Shell ».

Quand on exécute un fichier de commandes simplement en invoquant son nom, le shell interactif que l’on utilise va lancer l’exécution d’un shell identique à lui-même pour exécuter le fichier de commandes. Pour forcer l’exécution d’un shell particulier pour un fichier, l’en-tête suivant doit être placé en début de fichier :

#!/bin/sh

Ou alors, celui-ci doit être exécuté en invoquant le shell :

Exécution

Pour réaliser un script shell, il suffit de créer un fichier (auquel on préférera donner lextension .sh comme shell) dans lequel on entre les commandes à exécuter.

Ensuite pour rendre ce fichier exécutable :

chmod a+x hello.sh

Pour exécuter ensuite ce fichier ;

Le signe « . » désigne le répertoire courant.

Le bash (Bourne Again) que nous étudierons en profondeur est avant tout un langage de script. Il contient une série de variables prédéfinies :

BASH chemin et nom d’appel de cette instance du shell
BASH_VERSION version du shell
UID numéro d’utilisateur
GROUPS liste des groupes auxquels appartient l’utilisateur
HISTCMD numéro d’historique de la commande courante
HISTFILE fichier de sauvegarde de l’historique
HISTSIZE nombre de commandes à stocker dans l’historique
HOSTNAME nom qualifié de la machine
HOME répertoire personnel
HOSTTYPE architecture de la machine
LANG langue nationale
MACHTYPE combinaisons processeur/éditeur/système
OLDPWD répertoire précédent
OSTYPE nom du système d’exploitation
PATH chemin de recherche des commandes externes
PS1 texte de l’invite
PS2 invite secondaire
PWD répertoire courant
SECONDS Nombre de secondes écoulées depuis le lancement du shell
SHLVL 1 pour le shell initial, incrémenté à chaque appel.
TMOUT secondes d’inactivité entraînant la fin de la session
USER nom de l’utilisateur

Exemple : echo $BASH  renverra /bin/bash .

Nous pouvons ajouter temporairement des variables « systèmes » via la commande set .