Généralités sur le shell |
|
Listes des thèmes |
Le shell est un interpréteur de commandes qui permet à un opérateur d'agir sur le système. Il s'agit aussi d'un langage de programmation qui permet d'automatiser des actions. Il est attaché à un terminal console (login) ou à un pseudo-terminal (remote login, activation d'une fenêtre) , xterm (X11), cmdtool et shelltool (openwin). Il réalise la saisie et l'exécution des commandes, la redirection des entrées/sorties, l'expansion des noms de fichiers et la mise en place d'une interface utilisateur (historique, aliasing, contrôle des jobs, complétion, édition de lignes de commandes). En tant que langage de programmation, il permet une programmation interactive (en ligne) ou non-interactive (fichier de commandes). Il manipule des variables prédéfinies et des variables utilisateur. Comme tout langage de programmation il possède des instructions conditionnelles, itératives et intègre un mécanisme d'appel de fonctions. Il existe différents shell : sh ("Bourne shell", Steve Bourne) : shell historique (disponible sur tous les Unix) csh ("C-shell", Bill Joy) : shell BSD (disponible sur tous les Unix) ksh ("Korn shell") : shell normalisé POSIX (P1003.2) et ISO (HP, Solaris) bash ("Bourne again shell" de B. Fox et C. Ramey) : Ksh du domaine public (installé sur toutes les machines) zsh ("Zero shell") : Ksh du domaine public (installé sur toutes les machines) tcsh (" rc (Plan9, Tom Duff) Le fonctionnement d'un shell est le suivant. Lors de l'ouverture, lancement d'une console par exemple, 3 fichiers standard sont ouverts : l'entrée standard (stdin, fd=0, par défaut le clavier), la sortie standard (stdout, fd=1, par défaut l'écran) et la sortie d'erreur standard (stderr, fd=2,par défaut l'écran). Alors le schell lit sur son entrée standard soit une commande jusqu'à la fin de ligne (\n) et il interpréte les métacaractères et les opérateurs soit lecture de lignes de commandes contenu dans un fichier jusqu'à la fin de fichier (^D) . Ensuite, il procède au lancement d'une commande. Dans un premier temps, il recherche l'exécutable correspondant à l'aide du contenu de la variable PATH (path) et lance l'exécution de la commande soit en premier plan à l'aide d'un fork() puis d'un exec(commande) , d'un wait() et du prompt une fois terminé soit en arrière plan à l'aide l'enchaînement fork(), exec(commande) et prompt. |
Généralités
sur le shell Variables
d'environnement prédéfinies Variables
de substitution prédéfinies Instructions
conditionnelles et d'aiguillage |
|