Infrastructure
Bash : Bourne-Again SHell. « Le shell de Bourne, né une seconde fois », jeu de mots sur le shell historique de Stephen Bourne qu'il remplace, par analogie avec un guichetier qui exécute à la lettre chaque ordre tapé au comptoir. C'est l'interpréteur de commandes et le langage de script par défaut de la plupart des systèmes Linux.
Origine : Écrit par Brian Fox en 1989 pour le projet GNU, Bash reprend la syntaxe du Bourne shell et ajoute l'historique, la complétion et les fonctions. macOS l'a remplacé par zsh comme shell par défaut en 2019, notamment pour une question de licence.
Langage de script : Variables, boucles, conditions, tubes (|) et redirections (>, <) permettent d'enchaîner des programmes pour automatiser une tâche. Un script commence par la ligne #!/bin/bash, qui indique au système quel interpréteur appeler. Bash reste proche du shell POSIX, mais ses extensions (tableaux, doubles crochets, substitution de processus) n'existent pas dans le /bin/sh d'un conteneur minimaliste, où le même script échoue sans prévenir.
Pièges classiques : Une variable sans guillemets se découpe sur les espaces, et une commande qui échoue n'arrête pas le script par défaut : d'où le réflexe set -euo pipefail. Tout script « temporaire » de dix lignes finit en huit cents lignes qui tiennent la production, sans tests, signées d'un auteur parti depuis longtemps.
Sécurité : La faille Shellshock (2014) permettait d'exécuter du code via des variables d'environnement piégées, y compris à distance sur des serveurs web. Injecter une entrée utilisateur non filtrée dans une commande Bash reste une porte d'entrée classique.
Explication de la marmotte
Un ordinateur obéit à des ordres, mais il faut bien les lui transmettre. Bash est un traducteur à qui on écrit des phrases courtes dans une fenêtre noire, par exemple « liste les fichiers de ce dossier » ou « copie ce fichier ailleurs ». Il lit chaque phrase, comprend ce qu'il faut faire et demande à l'ordinateur de le faire. On peut aussi écrire toute une liste d'ordres dans un fichier, comme une recette de cuisine, et Bash la suit étape par étape sans se lasser. C'est pratique pour répéter cent fois la même corvée sans clic. Revers de la médaille : une erreur dans la recette sera, elle aussi, répétée cent fois.
Où ce terme est utilisé
- Shellshock CVE-2014-6271 : exécution de code via l'environnement Bash (37 occurrences)
- Écrire des scripts Bash système fiables et sûrs en production (35 occurrences)
- Codecov 2021 : secret dans une couche Docker et fuite des CI (6 occurrences)
- Installer et utiliser Claude Code, l'agent de code d'Anthropic (4 occurrences)
- Écrire un outil jetable proprement, sans faille ni dette (3 occurrences)
- Langages informatiques : histoire, inventeurs et usages (2 occurrences)
- Linux shell, permissions et processus, le modèle de contrôle d'accès (2 occurrences)
- Configurer OIDC entre Keycloak et application interne (1 occurrence)
- CWE-77 : injection de commande, la classe au-dessus de l'interpréteur système (1 occurrence)
- CWE-78 : injection de commande système, quand le programme appelle un interpréteur (1 occurrence)
