L’interpréteur de commandes Bourne est l’un des plus anciens interpréteurs de commandes encore utilisés sur les systèmes Linux modernes, même s’il n’est pas aussi répandu que Bash. Voici ce qu’il faut savoir sur l’interpréteur de commandes Bourne sous Linux.
Qu’est-ce que l’interpréteur de commandes Bourne ?
L’interpréteur de commandes Bourne, souvent abrégé en « sh », porte le nom de l’informaticien britannique Stephen R. Bourne, qui l’a développé alors qu’il travaillait aux Bell Labs en 1978. Cet interpréteur de commandes a remplacé l’ancien interpréteur de commandes Thompson, écrit par l’un des premiers créateurs d’Unix, Ken Thompson.
L’interpréteur de commandes Bourne a fait ses débuts avec la version 7 d’Unix en 1979. Il comportait des fonctionnalités telles que le contrôle de flux, les variables et une meilleure gestion des chaînes de caractères. Ces fonctionnalités ont facilité l’utilisation de l’interpréteur de commandes comme un langage de programmation plutôt que comme un simple moyen d’appeler d’autres programmes.
Bien que l’interpréteur de commandes Bourne soit resté populaire pour l’écriture de scripts portables sur les systèmes Unix, il a été supplanté pour une utilisation interactive par l’interpréteur de commandes C, KornShell, Bourne Again shell, également connu sous le nom de Bash, et Z shell. Ces shells offraient des fonctionnalités telles que l’historique des commandes et l’édition de la ligne de commande, qui facilitaient la vie des utilisateurs et des administrateurs.
Les syntaxes de KornShell, Bash et Z shell (dont il sera question plus loin) sont influencées par le Bourne shell.
Des langages de script multiplateformes plus puissants, dotés de fonctionnalités encore plus avancées, comme Perl et Python, ont également largement remplacé les scripts shell.
Néanmoins, l’interpréteur de commandes Bourne est largement compris et de nombreux scripts fournis avec les programmes Linux utilisent sa syntaxe pour diverses tâches.
Le comportement de l’interpréteur de commandes Bourne a été codifié dans la norme POSIX, de sorte que de nombreux systèmes modernes de type Unix l’implémentent d’une manière ou d’une autre en utilisant un interpréteur de commandes compatible.
Alternatives à l’interpréteur de commandes Bourne
Il existe plusieurs alternatives modernes à code source libre à l’interpréteur de commandes Bourne original sur les systèmes Linux. Voici quelques-unes des plus connues :
1. Bourne Again Shell (Bash)
Le nom Bourne Again shell (Bash) est un jeu de mots sur le Bourne shell. Cet interpréteur de commandes a été développé à l’origine comme un composant du système GNU, précédant Linux de plusieurs années.
Il est largement compatible avec les scripts écrits à l’origine pour l’interpréteur de commandes Bourne. Il intègre également des fonctionnalités telles que l’édition de ligne de commande, inaugurée par KornShell.
Bash est l’interpréteur de commandes par défaut de nombreuses distributions Linux et est donc devenu un standard de facto.
2. KornShell
KornShell, également connu sous le nom de ksh, a été développé à l’origine par David Korn, également aux Bell Labs, dans les années 1980. Construit à partir de l’interpréteur de commandes Bourne, KornShell a introduit des fonctionnalités supplémentaires telles que le contrôle des tâches, les tableaux et l’édition de la ligne de commande. Cette dernière fonctionnalité était révolutionnaire lorsqu’elle est apparue, car elle était beaucoup plus simple que le mécanisme d’historique de l’interpréteur de commandes C.
Si vous aviez besoin de rééditer une commande précédemment émise, vous pouviez utiliser des commandes similaires à Vi ou Emacs pour le faire.
KornShell a été installé par défaut sur certains systèmes Linux commerciaux comme Oracle Solaris. La version originale de KornShell ayant été publiée par AT&T sous une licence propriétaire, une version libre nommée pdksh a finalement été publiée.
3. Almquist/Debian Almquist Shell
L’interpréteur de commandes Almquist a été écrit à l’origine par Kenneth Almquist et était destiné à remplacer l’interpréteur de commandes Bourne par un interpréteur de commandes léger. De nombreux systèmes BSD l’incluent dans l’implémentation de sh.
Une version a été portée sur Debian dans les années 1990 et est connue sous le nom d’interpréteur de commandes Debian Almquist. Comme son nom l’indique, il s’agit de l’implémentation de sh sur les systèmes Debian et Ubuntu.
4. Z Shell
Z shell, ou zsh, est l’un des shells les plus récents, développé à l’origine en 1990 par Paul Falsted. L’interpréteur de commandes Z est devenu célèbre pour ses fonctionnalités avancées. Un bon exemple est le globbing récursif, ou la possibilité de faire correspondre des caractères génériques dans des sous-répertoires.
L’interpréteur de commandes Z est l’interpréteur de commandes par défaut pour macOS et Kali Linux.
Compatibilité avec le Bourne Shell
Bien que ces interpréteurs de commandes soient largement compatibles avec les scripts écrits à l’origine pour l’interpréteur de commandes Bourne, il existe des moyens de modifier leur comportement pour qu’ils ressemblent davantage à l’interpréteur de commandes original.
Le principal moyen d’y parvenir est d’utiliser un lien symbolique. La plupart des systèmes établissent un lien symbolique entre /bin/sh à Bash ou à un autre shell. Lorsqu’il est invoqué de cette manière, l’interpréteur de commandes entre dans un mode de compatibilité avec l’interpréteur de commandes Bourne.
Vous pouvez voir quel shell /bin/sh est accessible à l’aide de la commande ls :
ls -l /bin/sh
Vous connaissez maintenant le Shell Bourne
L’interpréteur de commandes Bourne est l’un des plus anciens standards pour l’écriture de scripts sur les systèmes de type Unix. Même s’il a été remplacé par d’autres shells, il reste indispensable pour exécuter des scripts écrits par d’autres.
Bash est l’un des meilleurs dérivés de Bourne pour le codage, en particulier pour son approche des variables. Il possède des variables uniques qui peuvent vous inciter à le considérer pour votre prochain projet.
