Bourne shell

langage de programmation

Le Bourne shell ou bsh (ou encore simplement sh dans de nombreuses versions d'UNIX) est un shell Unix. C'est le shell par défaut de la version 7 d'Unix ; dans les versions antérieures d'UNIX, le nom sh désigne le Thompson shell, et dans certaines versions actuelles, il désigne le Korn shell.

Bourne shell

Description de l'image Version 7 UNIX SIMH PDP11 Kernels Shell.png.
Informations
Développé par Stephen BourneVoir et modifier les données sur Wikidata
Première version
Système d'exploitation UnixVoir et modifier les données sur Wikidata
Environnement Unix
Langues anglais
Type Shell Unix
Utilitaire UNIX (d)
Langage de programmation
Langage en ligne de commande (d)Voir et modifier les données sur Wikidata

Le Bourne shell a été programmé par Stephen Bourne (d'où le nom) d'AT&T Bell Laboratories et a fait son apparition pour la première fois en 1977 sur la version 7 d'Unix qui était distribuée aux universités et académies. Il est resté depuis cette époque le shell par défaut pour les comptes Unix. Le fichier exécutable du Bourne shell ou de tout autre shell compatible se trouve à l'emplacement /bin/sh sur la plupart des systèmes Unix et est toujours le shell par défaut du compte root sur de nombreuses implémentations d'Unix.

Avec son système de tubes connectant la sortie d'une commande à l'entrée d'une autre, il permet d'écrire des scripts complexes à partir de commandes simples. Une version améliorée de ce shell est le Bourne-Again shell.

Principes généraux

modifier

Les buts poursuivis dans la conception du Bourne shell étaient[1] :

  • de pouvoir utiliser des shell scripts comme filtres,
  • des possibilités de programmation, y compris avec structures de contrôle et variables,
  • d'avoir le contrôle sur tous les descripteurs de fichiers en lecture/écriture,
  • d'avoir le contrôle sur signaux dans l'exécution des scripts,
  • de s'affranchir des limites sur la longueur des chaînes dans l'interprétation des shell scripts,
  • de rationaliser et généraliser les mécanismes d'adressage des chaînes de caractère (string quoting),
  • de disposer d'un mécanisme d’environnement, afin de récupérer le contexte au démarrage du script, et de pouvoir le transmettre aux process-fils sans avoir à recourir à des chemins explicites.

Caractéristiques de la version originale

modifier

Le Bourne shell a été le premier à mettre en œuvre la convention de descripteur de fichier 2> pour adresser le flux du message d'erreur, dotant ainsi les scripts d'un mécanisme de gestion dynamique des exceptions.

Stephen Bourne a importé certains aspects du compilateur Algol 68C (sur lequel il avait travaillé à l'Université de Cambridge) dans son shell. Ce sont notamment des réemplois de portions du compilateur Algol 68 : "if ~ then ~ elif ~ else ~ fi", "case ~ in ~ esac" et les clauses "for ~ while ~ do ~ od" (avec done au lieu de od) pour la syntaxe commune du Bourne shell Unix. En outre (et bien que la version 7 du shell soit écrite en langage C), Bourne a utilisé quelques macros[2] pour donner à son code source un rendu « Algol 68 ». Ces macros (avec la commande finger apparue avec la version BSD 4.2 d'Unix) ont inspiré l’IOCCC – International Obfuscated C Code Contest[3].

Notes et références

modifier
  1. D'après Howard Dahdah (Techworld Australia), « The A-Z of Programming Languages: Bourne shell, or sh », Computerworld, no 5 mars,‎ (lire en ligne)
  2. Steve Bourne, « mac.h – Macros de S. Bourne pour structurer C au format « pseudo-Algol68 » », sur AT&T, (consulté le )
  3. Landon Curt Noll, Simon Cooper, Peter Seebach et Leonid A. Broukhis, « The IOCCC FAQ – Q/A: How did the IOCCC get started? », sur www.ioccc.org, (consulté le )

Voir aussi

modifier

Articles connexes

modifier