⏱️ TL;DR : La réponse rapide
Pense au Shell (sh) comme au passeport de base pour parler à ton système Linux/Unix : un standard universel, minimaliste et portable. Bash, c’est ton passeport premium avec tous les visas : bien plus pratique, puissant et riche en fonctionnalités (historique, autocomplétion, scripts avancés).
En 2025, tu utilises très probablement Bash par défaut. Mais pour écrire un script solide et compatible partout, commence sa première ligne par #!/bin/sh. Pour exploiter toute la puissance de ton terminal au quotidien, tu profites déjà de Bash.
Tu débutes en Linux, tu vois sh et bash un peu partout et tu te demandes quelle est la vraie différence ? C’est normal. Je vais te l’expliquer sans jargon inutile, comme je le ferais pour comparer deux forfaits de voyage. Pas de théorie creuse, que du concret pour t’aider à mieux utiliser ta machine.
Shell vs Bash : Le duel expliqué simplement
Imagine que tu veuilles donner des ordres à ton ordinateur. Le Shell est l’interprète bilingue qui traduit tes commandes tapées dans le terminal en actions compréhensibles par le système. C’est le concept de base.
Bash (Bourne-Again SHell) est l’un de ces interprètes, mais c’est le plus populaire et le plus évolué. C’est comme si tu passais d’un guide de conversation papier à un assistant personnel polyglotte avec la mémoire des lieux déjà visités et des recommandations en temps réel.
| Aspect | Shell (sh – le standard) | Bash (le couteau-suisse) |
|---|---|---|
| 🛠️ Fonctionnalités | Les bases : exécuter des commandes, rediriger les flux (>, |). Idéal pour des scripts simples et ultra-portables. |
Tout ce que sh fait, plus : historique des commandes (history), autocomplétion au touche de Tab, gestion de jobs en arrière-plan, boucles plus flexibles, tableaux associatifs. |
| 🌍 Portabilité | Star de la compatibilité. Un script écrit pour sh fonctionnera sur à peu près n’importe quel système Unix/Linux, même ancien. |
Moins portable. Un script utilisant des extensions Bash (ex: [[ ]]) peut planter si il est exécuté avec un vrai sh. C’est le piège classique. |
| ⚡ Performance | Très léger et rapide au démarrage. Sur Ubuntu/Debian, /bin/sh est souvent un lien vers Dash, un shell minimaliste parfait pour les scripts système. |
Plus lourd, mais la différence est imperceptible pour l’usage quotidien. La richesse des fonctionnalités compense largement. |
| 📌 Usage en 2025 | Pour écrire des scripts robustes qui doivent tourner partout (containers Docker légers, systèmes embarqués). | Pour ton terminal interactif au quotidien et pour tes scripts personnels/administratifs où la puissance prime. |
Le « Shebang » : La ligne la plus importante de ton script
C’est la première ligne de ton fichier script. Elle dit au système : « Hé, exécute-moi avec ce programme-là ». C’est ici que tu fais ton choix stratégique.
#!/bin/sh
# Script portable. Utilise les fonctions POSIX basiques.
echo "Mon script tourne partout."
#!/bin/bash
# Ou mieux, pour trouver Bash là où il est installé :
#!/usr/bin/env bash
# Script qui utilise toutes les extensions cool de Bash.
echo "La date d'aujourd'hui est : $(date +%A)"
Conseil de pro : Si ton script n’a pas besoin des fonctionnalités spécifiques à Bash, pars sur #!/bin/sh. C’est une bonne pratique qui évite les mauvaises surprises.
Comment savoir ce que j’utilise, et comment changer ?
Ouvre ton terminal et tape :
echo $SHELL
Cela t’affiche ton shell de connexion par défaut. Probablement /bin/bash.
Pour voir vers quoi pointe le fameux sh :
ls -l /bin/sh
Sur beaucoup de systèmes, tu verras que c’est un lien vers dash ou bash.
Pour changer ton shell par défaut (vers Bash si ce n’est pas le cas) :
chsh -s /bin/bash
Tu devras généralement te reconnecter pour voir le changement.
Et les autres shells dans tout ça ? (Zsh, Fish, etc.)
Bash est le plus répandu, mais il a des concurrents sérieux :
- Zsh : C’est le nouveau shell par défaut sur macOS depuis 2019. Il inclut tout ce que Bash fait, avec en plus une autocomplétion bien plus intelligente, une meilleure personnalisation (Oh My Zsh est un must-have) et une configuration plus cohérente. C’est un excellent upgrade.
- Fish : Connu pour être « friendly interactive shell ». Configuration hyper facile, suggestions en couleurs dès que tu tapes. Moins compatible POSIX par défaut, mais parfait pour un usage desktop simple.
- Dash : Le remplaçant léger de
shdont on a parlé. Il n’est pas fait pour être utilisé interactivement, mais pour exécuter des scripts système très vite.
💎 Mon conseil perso (2025) : Si tu es sur Linux, reste avec Bash, il est parfaitement adapté. Si tu es sur macOS ou que tu adores personnaliser ton terminal, saute sur Zsh avec le framework Oh My Zsh. N’y pense même pas pour tes scripts systèmes critiques : utilise #!/bin/sh.
FAQ : Les questions que tout le monde se pose
En résumé, sh c’est la norme universelle, bash c’est l’outil pratique et puissant que tu utilises sûrement déjà. Maintenant que tu connais la différence, tu peux faire des choix éclairés, que ce soit pour écrire un script indestructible ou pour personnaliser ton terminal comme un pro. Bonne exploration !