Aller au contenu

Bash : Bourne-Again SHell

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.

Schéma de séquence entre quatre acteurs : Utilisateur, Bash, Programme et Noyau. 1, l'utilisateur envoie à Bash la ligne de commande tapée ; 2, Bash développe lui-même les variables, les jokers et les alias ; 3, Bash lance le programme via fork puis exec ; 4, le programme fait des appels système au noyau ; 5, le programme renvoie à Bash un code de retour, 0 signifiant succès.

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é

← Tout le glossaire