Différence entre Sh et Bash

Fumbani Banda 30 janvier 2023
  1. Qu’est-ce qu’un shell ?
  2. Comment trouver le shell actuel
  3. Comment trouver les shells disponibles
  4. La commande sh et son utilisation
  5. Bash et son utilisation
Différence entre Sh et Bash

Ce tutoriel explique ce qu’est un shell, connaître le shell actuellement utilisé, vérifier la liste de tous les shells disponibles, et la différence entre sh et bash.

Qu’est-ce qu’un shell ?

Un shell est un programme informatique qui prend des commandes. Il interprète également les commandes et les transmet au système d’exploitation pour traitement. Il agit comme une interface entre l’utilisateur et le système d’exploitation, à travers laquelle l’utilisateur peut interagir avec le système d’exploitation.

La plupart des systèmes d’exploitation Linux sont livrés avec au moins un seul programme shell. Le programme shell sera Bash, Dash ou les deux.

Comment trouver le shell actuel

Pour connaître le shell actuellement utilisé sur un système Linux, nous pouvons lire le fichier /etc/passwd car il stocke les informations du compte utilisateur. Exécutons la commande ci-dessous pour connaître le shell actuel.

La commande grep permet de rechercher une chaîne de caractères dans un fichier spécifié. La commande ci-dessous recherche l’utilisateur fumba dans le fichier passwd situé dans /etc. Lorsque la commande grep trouve une correspondance, elle imprime la ligne avec le résultat.

$ grep fumba /etc/passwd

W peut voir à partir de la sortie ci-dessous que le shell par défaut pour l’utilisateur fumba est bash.

fumba:x:1000:1000:,,,:/home/fumba:/bin/bash

Comment trouver les shells disponibles

Tous les shells disponibles dans les systèmes Linux sont répertoriés dans le fichier /etc/shells. Nous utilisons la commande cat ci-dessous pour afficher le contenu du fichier /etc/shells.

cat /etc/shells

La sortie ci-dessous affiche la liste de tous les shells disponibles sur notre système.

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

La commande sh et son utilisation

sh est un nom de commande pour le shell Bourne. C’est l’interpréteur de langage de commande standard pour les systèmes d’exploitation de type Unix. Il exécute des commandes à partir d’une chaîne de ligne de commande, de l’entrée standard ou d’un fichier spécifié. sh est conforme aux normes POSIX.

L’interface de système d’exploitation portable (POSIX) est une famille de normes spécifiées par l’IEEE Computer Society pour maintenir la compatibilité entre les systèmes d’exploitation. Ces normes aident à développer des logiciels multiplateformes pour plusieurs systèmes d’exploitation une fois que les normes sont respectées.

La plupart des systèmes ont le fichier /bin/sh, mais c’est un lien symbolique et n’invoquera pas sh. Dans Ubuntu, /bin/sh est un lien symbolique vers le shell Dash. Nous pouvons vérifier en exécutant la commande ci-dessous.

$ file -h /bin/sh

La sortie ci-dessous montre que /bin/sh est un lien symbolique vers dash.

/bin/sh: symbolic link to dash

Ajoutons #!/bin/sh à un script.

#!/bin/sh

printf "sh points to dash!\n"

Le script ci-dessus spécifie /bin/sh comme interpréteur. Cependant, étant donné que /bin/sh pointe vers dash, le shell dash exécutera le script en tant qu’interpréteur.

Bash et son utilisation

Bash signifie Bourne Again shell. Comme sh, c’est un processeur de langage de commande et un shell. Cependant, bash est un sur-ensemble de sh. Il prend en charge les fonctionnalités de sh et fournit plus d’extensions et de fonctionnalités. Bash est le shell par défaut pour les systèmes d’exploitation Linux.

Au début, Bash était conforme aux normes POSIX, mais il a cessé de suivre les normes POSIX au fil du temps à mesure que de nouvelles fonctionnalités et extensions étaient ajoutées. Cependant, bash peut toujours être utilisé en mode POSIX en définissant le drapeau -posix, comme indiqué ci-dessous.

$ bash --posix

Écrivons un script bash conforme au standard POSIX.

#!/bin/bash

set -o posix
printf "we are using bash shell!\n"

L’interpréteur bash exécutera le script ci-dessus puisqu’il a été spécifié dans la première ligne, #!/bin/bash.

La commande set active les options dans le script. Dans notre cas, cela permet au shell bash d’exécuter le script en mode POSIX.

Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

Article connexe - Linux Shell

Article connexe - Linux Bash