À retenir
- C'est une syntaxe exclusive au shell Bash.
- Cela pose des problèmes de portabilité (le script peut planter ailleurs).
- C'est souvent plus pratique à écrire, mais moins universel.
Un bashisme est une syntaxe ou une commande qui ne fonctionne que dans l'interpréteur de commandes Bash. On peut comparer cela à un mot d'argot local : si vous l'utilisez dans sa ville d'origine, tout le monde vous comprend, mais si vous changez de région, plus personne ne vous suit.
Étymologie
Le mot est construit sur le nom Bash (l'acronyme de Bourne Again Shell) auquel on a ajouté le suffixe -isme, utilisé ici pour désigner une particularité de langage. Il est apparu avec la généralisation de Linux où Bash est devenu le standard, au risque de faire oublier les autres interpréteurs plus simples.
Exemples d'usage
- L'utilisation de la double parenthèse
(( i++ ))pour incrémenter une variable au lieu de la commande standardexpr. - L'usage de
[[ ... ]]pour les tests de conditions au lieu du simple[ ... ]universel. - La redirection combinée
&>pour capturer à la fois les erreurs et les messages classiques.
Cas d'usage
On rencontre ce terme principalement en administration système et en développement DevOps. Il intervient lorsqu'un script écrit pour Linux (souvent sous Bash) est porté vers un autre système (comme BSD, macOS ou un système embarqué) qui utilise un interpréteur plus strict appelé POSIX sh.
Bonnes pratiques
Si votre script doit être universel, évitez les bashismes et visez la compatibilité POSIX. Utilisez l'outil checkbashisms ou shellcheck pour détecter ces particularités dans vos fichiers. Si vous choisissez d'utiliser des bashismes, assurez-vous que la première ligne de votre script (le shebang) soit bien #!/bin/bash et non #!/bin/sh.
Synonymes
Antonymes
Conseil
Quand vous débutez, prenez l'habitude de tester vos scripts avec shellcheck. C'est un excellent outil qui vous dira immédiatement si vous utilisez une syntaxe qui risque de ne pas fonctionner partout.
Questions fréquentes
Pourquoi mon script marche sur mon PC mais pas sur mon serveur ?
Il est probable que votre script contienne des bashismes et que votre serveur utilise un shell plus basique comme Dash pour exécuter les fichiers .sh.
Est-ce mal d'utiliser des bashismes ?
Non, tant que vous précisez explicitement que le script nécessite Bash via le shebang #!/bin/bash.