Le shell est l’interface homme/machine Unix. Il en existe plusieurs qui réalisent les mêmes fonctions de base et qui diffèrent par la syntaxe mais aussi quelque peu par les fonctionnalités offertes. Ici, nous étudions le bash car il fait partie de la majorité des distributions standards GNU/Linux: c’est le shell GNU. En outre, il en existe plusieurs versions dans le domaine public et il fait partie des shells qui offrent un maximum de fonctionnalités: il est conforme au standard IEEE POSIX P1003.2/ISO 9945.2. À titre d’information, citons quelques shells autres que bash: le shell de Bourne (commande sh) de AT&T Bell Laboratories, le Korn shell (commande ksh) de David G. Korn de AT&T Bell Laboratories, le c_shell (commande csh) d’origine Berkeley BSD et le Tenex shell (commande tcsh) qui est une extension de csh.

Le principe général du shell est relativement simple. C’est une boucle infinie. On en sort soit par l’exécution de la commande exit, soit par la frappe des touches CTRL-D. Dans le cas d’une fenêtre de terminal, la fin du shell de connexion ferme la fenêtre. Pour analyser les commandes lues au clavier, le shell découpe la ligne lue en mots, dont le premier est toujours considéré comme la commande à exécuter: cette opération est l’analyse syntaxique. Pour effectuer ce découpage en mots, le shell prend en compte les caractères définis comme séparateurs (par défaut espace, tabulation et NEWLINE) mais aussi certains caractères spéciaux, appelés méta-caractères qui sont alors interprétés pour remplir un rôle défini. Par exemple:

Les caractères spéciaux sont des caractères qui permettent de paramétrer l’interprétation des lignes de commandes. Ils sont étudiés tout au long de cette section ; voici la liste de ceux que nous étudions dans la suite: « > », « >> », « 2 > », « < », « | », «  », « \ », « $( » avec « ) », « ‘ », « " », « * », « ? », « [ » avec « ] », « ! », «  », « ~ », « ; », « ( » avec « ) », « # » et « = ». C’est cette liste de méta-caractères qui fait peur aux novices. Nous allons donc les étudier en détails et progressivement.

En plus du rôle d’interpréteur de commandes, le shell joue le rôle de langage de programmation, et à ce titre, il gère des variables et des fonctions, et dispose de structures de contrôle (boucles, conditionnelles...). Ces fonctionnalités servent essentiellement pour l’écriture de programmes (appelés shell-script) qui permettent à chacun de paramétrer une session et de développer ses propres outils. Dans ce module d’introduction, le shell est principalement étudié dans son premier rôle d’interpréteur de commandes. En ce qui concerne le langage de programmation, nous nous contentons de présenter les principales variables et shell-scripts de configuration du shell utilisé par l’utilisateur.  
 
Retour à la page de cours