Qu'est-ce que le Bourne Shell?
Le shell Bourne est un petit programme qui s'exécute sur les systèmes d'exploitation Unix® et LINUX® et fournit une interface permettant d'exécuter des programmes sur le système. Il est souvent appelé interface de ligne de commande ou interpréteur de commandes, car il ne fournit aucune interface utilisateur graphique à l'utilisateur. Les commandes et tous les paramètres nécessaires à exécuter sont saisis dans le shell. Bourne Shell est également un langage de script permettant aux utilisateurs de créer et d’exécuter des fichiers de script pouvant traiter des données via plusieurs programmes au moyen d’une seule commande. Sur les systèmes de type Unix®, le programme est simplement appelé "sh".
Les premiers shells pour systèmes Unix® étaient connus sous le nom de shell Thompson, créé par Ken Thompson, l'un des créateurs originaux du système d'exploitation Unix®. Le shell Thompson était limité à l'interprétation des commandes et un certain nombre de fonctions supplémentaires devaient être exécutées en tant qu'opérations externes. Plus tard, Stephen Bourne a créé le shell Bourne pour remplacer le shell Thompson, en ajoutant un certain nombre de nouvelles fonctionnalités au shell lui-même, ainsi que le langage de script du shell.
En réalité, le shell Bourne a été conçu dès le départ comme langage de script. Bien qu’il s’agisse toujours de l’interface de ligne de commande pour Unix® version sept, il offre également aux utilisateurs la possibilité de développer des scripts shell liant des commandes pour traiter des données. En utilisant cette programmation, l'utilisateur peut établir des variables pour capturer des données connues ou inconnues à partir d'entrées ou de sorties et manipuler le traitement de ces données en utilisant des instructions conditionnelles dans le script via une technique appelée flux de contrôle.
Ce fut également le premier shell à implémenter une fonctionnalité appelée traitement du signal. À travers le shell Bourne, un utilisateur peut envoyer un type de signal spécifique à un processus déjà exécuté sur l'ordinateur, en lui demandant de faire autre chose. Nombre d'entre elles sont des moyens d'arrêter un processus en cours d'exécution et de produire une sorte de sortie pouvant être utilisée pour le débogage, bien qu'il existe d'autres méthodes pour interrompre temporairement un processus, une reprise, etc.
La possibilité de contrôler directement les descripteurs de fichier était une autre première pour le shell Bourne. Sur un système de type Unix®, chaque programme en cours d'exécution dispose d'un tableau qui répertorie les descripteurs de fichier pour tous les fichiers ouverts. Cela peut inclure n'importe quoi, d'un simple fichier texte à un répertoire ou même les sockets de communication utilisés par les processus pour partager des données les uns avec les autres. Pour qu'un utilisateur puisse contrôler les descripteurs de fichier sur un système, il permet un contrôle sans précédent sur les entrées et les sorties pour pratiquement tout ce qui se trouve sur l'ordinateur.
Bien sûr, même si le shell Bourne offrait de telles fonctionnalités supplémentaires aux utilisateurs, il lui manquait des fonctionnalités telles que la possibilité de contrôler les processus de manière interactive, d'établir des alias de commande et de conserver un historique. Plus tard, cependant, un certain nombre de descendants ont commencé à émerger. Ils ont pris les fonctions de coque les plus utiles conçues au fil des années et les ont intégrées dans de nouvelles coque. Un exemple courant est le shell Bourne-again, ou Bash, qui est répandu sur de nombreux systèmes LINUX®. En conséquence, nombre de ces descendants sont parfaitement capables d’exécuter des scripts standard de shell Bourne, ce qui confère à chaque système de type Unix® l’implémentation du shell Bourne original d’une manière ou d’une autre. Sur de nombreux systèmes LINUX®, il s’agit simplement d’un lien entre "sh" et "bash" ou un autre descendant capable.