Qu’est-ce qu’un Shell ?
Un shell est un programme qui fournit une interface entre un utilisateur et un noyau de système d’exploitation (OS). Un OS démarre un shell pour chaque utilisateur lorsque celui-ci se connecte ou ouvre un terminal ou une fenêtre console.
Un noyau est un programme qui :
- Contrôle toutes les opérations de l’ordinateur.
- Coordonne tous les utilitaires d’exécution
- Assure que les utilitaires d’exécution n’interfèrent pas les uns avec les autres ou ne consomment pas toutes les ressources du système.
- Planifie et gère tous les processus système.
En s’interfaçant avec un noyau, un shell fournit un moyen pour un utilisateur d’exécuter des utilitaires et des programmes.
Environnement utilisateur
Le shell fournit également un environnement utilisateur que vous pouvez personnaliser en utilisant des fichiers d’initialisation. Ces fichiers contiennent des paramètres pour les caractéristiques de l’environnement utilisateur, tels que :
- Les chemins de recherche pour trouver des commandes.
- Les permissions par défaut sur les nouveaux fichiers.
- Les valeurs des variables que d’autres programmes utilisent.
- Les valeurs que vous pouvez personnaliser.
Quels sont les différents shells ?
Les sections suivantes décrivent les shells d’OS principalement disponibles sur le système d’exploitation UNIX/Linux. Les fonctionnalités des shells et leurs invites par défaut sont également décrites.
Le shell Bourne
Le shell Bourne (sh), écrit par Steve Bourne aux AT&T Bell Labs, est le shell UNIX original. C’est l’interpréteur de commandes préféré pour la programmation shell en raison de sa compacité et de sa rapidité. L’un des inconvénients de l’interpréteur de commandes Bourne est qu’il manque de fonctionnalités pour une utilisation interactive, comme la possibilité de rappeler les commandes précédentes (historique). L’interpréteur de commandes Bourne manque également d’une gestion intégrée des expressions arithmétiques et logiques.
L’interpréteur de commandes Bourne est l’interpréteur de commandes par défaut du système d’exploitation Solaris. C’est le shell standard pour les scripts d’administration du système Solaris. Pour le shell Bourne le:
- Nom du chemin complet de la commande est /bin/sh et /sbin/sh.
- L’invite par défaut de l’utilisateur non root est $.
- L’invite par défaut de l’utilisateur root est #.
Le shell C
Le shell C (csh):
- est une amélioration d’UNIX écrite par Bill Joy à l’université de Californie à Berkeley.
- Incorporé des fonctionnalités pour une utilisation interactive, comme les alias et l’historique des commandes.
- Inclut des fonctionnalités de programmation pratiques, telles que l’arithmétique intégrée et une syntaxe d’expression de type C.
Pour le shell C, le:
- Nom du chemin complet de la commande est /bin/csh.
- L’invite par défaut de l’utilisateur non root est le nom d’hôte %.
- L’invite par défaut de l’utilisateur root est le nom d’hôte #.
Le shell Korn
Le shell Korn (ksh):
- A été écrit par David Korn à AT&T Bell Labs
- C’est un sur-ensemble du shell Bourne.
- Porte tout ce qui est dans le shell Bourne.
- Possède des fonctionnalités interactives comparables à celles de l’interpréteur de commandes C.
- Comprend des fonctionnalités de programmation pratiques comme l’arithmétique intégrée et des tableaux de type C, des fonctions et des facilités de manipulation de chaînes de caractères.
- Est plus rapide que l’interpréteur de commandes C.
- Exécute les scripts écrits pour l’interpréteur de commandes Bourne.
Pour l’interpréteur de commandes Korn le:
- Le nom du chemin complet de la commande est /bin/ksh.
- L’invite par défaut de l’utilisateur non root est $.
- L’invite par défaut de l’utilisateur root est #.
Le shell GNU Bourne-Again
Le shell GNU Bourne-Again (bash) :
- est compatible avec le shell Bourne.
- Incorpore des fonctionnalités utiles des shells Korn et C.
- Possède des touches fléchées qui sont automatiquement mappées pour le rappel et l’édition des commandes.
Pour le shell GNU Bourne-Again, le:
- Nom du chemin complet de la commande est /bin/bash.
- L’invite par défaut pour un utilisateur non root est bash-x.xx$. (Où x.xx indique le numéro de version du shell. Par exemple, bash-3.50$)
- L’invite par défaut pour un utilisateur root est bash-x.xx#. (Où x.xx indique le numéro de version du shell. Par exemple, bash-3.50$#)
Voici une courte comparaison des 4 shells et de leurs propriétés.
Shell | Path | Prompt par défaut (non…root) | Extrait par défaut (utilisateur non root) |
---|---|---|---|
Le Bourne Shell (sh) | /bin/sh et /sbin/sh | $ | # |
Le C Shell (csh) | /bin/csh | % | # |
Le Shell Korn (ksh) | /bin/ksh | $ | # |
Le Shell GNU Bourne-Again Shell (Bash) | /bin/bash | bash-x.xx$ | bash-x.xx# |