sh vs bash : Un résumé

Avr 18, 2021
admin

Si vous lisez ceci, alors il y a une bonne chance que vous ayez rencontré les termes shell, sh, bash etc dans le passé. Ces termes peuvent sembler confus et comme ils sont étroitement liés, cela rend le problème encore pire. J’ai donc décidé d’écrire ce post dans le but d’essayer d’expliquer les différences entre eux.

Shell vs Kernel

Avant d’aller plus loin, il est important que nous comprenions ce que signifient les termes shell et kernel.

Kernel

Le kernel est la plaque tournante du système d’exploitation. Il est responsable de faire des choses comme interagir avec le matériel, faire des entrées/sorties de fichiers, et spawn off processus.

Shell

Le shell agit comme une interface entre l’utilisateur et le noyau. Techniquement parlant, un shell est un interpréteur de ligne de commande, c’est-à-dire le programme qui interprète la commande que vous saisissez dans votre émulateur de terminal (mode interactif) ou qui traite les scripts shell (fichiers texte contenant des commandes).

Maintenant que nous avons une idée de ce que sont le shell et le noyau, nous pouvons essayer de comprendre sh et Bash.

sh

Strictement parlant, sh (ou le langage de commande du shell) est un langage de programmation décrit par la norme POSIX. La clé ici est que sh n’est pas vraiment un langage de programmation en soi. Il s’agit simplement d’une spécification. La spécification est une description détaillée de la syntaxe et de la sémantique de ce langage. La spécification n’inclut pas une implémentation.

Bash

Il existe différents systèmes d’exploitation avec leurs propres shells et noyaux. Bash est le shell du système d’exploitation GNU. Mais on peut aussi dire que bash est un langage de programmation.

Attendez, n’est-ce pas confus ? Est-ce que bash est à la fois un shell et un langage de programmation ?

Pensez à python. Nous pouvons aussi lancer Python en mode interactif et il se comporte comme un shell. Ou JavaScript, ou Ruby ou n’importe quel langage de script.

C’est logique ?

Donc bash est un langage de programmation qui peut être considéré comme une implémentation de sh (bien que cela ait changé avec le temps).

En résumé, sh est une spécification, bash est l’implémentation.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.