ANNÉES 1980

Bash

Dans l'univers des shells UNIX, peu d'histoires rivalisent avec celle du Bourne-Again Shell. Bash tire son nom d'un jeu de mots avec Steve Bourne, l'homme derrière le shell original d'UNIX (/bin/sh) de la septième édition de Bell Labs. Brian Fox, travaillant pour la Free Software Foundation, lance ce projet avec une ambition claire : créer un interpréteur de commandes libre qui deviendrait le cœur du système GNU.

L'exercice s'avère plus délicat qu'il n'y paraît. Recréer un shell compatible avec celui de Bourne ne se limite pas à développer les fonctionnalités documentées. Fox et son équipe découvrent que les utilisateurs Unix exploitent tous les recoins du shell original, y compris ses comportements les plus obscurs et ses subtilités non documentées. La grammaire du Bourne shell manquait de précision, transformant chaque détail en défi technique.

Malgré ces difficultés, Bash s'enrichit. Les développeurs puisent dans le meilleur des autres shells : les fonctionnalités avancées du Korn shell (ksh) et les innovations du C shell (csh) viennent compléter la base compatible POSIX. Cette approche hybride donne naissance à un outil qui respecte les standards tout en offrant une expérience utilisateur moderne.

Quand Chet Ramey de l'université Case Western Reserve reprend les rênes du projet, Bash entre dans une phase de maturation. Ramey apporte une vision long terme et une méthode de développement rigoureuse. Sous sa direction, le shell gagne en stabilité et en fonctionnalités. La version 1.13 adopte le fonctionnement « eight-bit clean ». Jusque-là, Bash utilisait le huitième bit des caractères pour marquer leur statut lors des expansions, ce qui limitait la manipulation de fichiers contenant des caractères accentués ou des symboles spéciaux. Cette correction ouvre la voie à une meilleure internationalisation.

L'interface de Bash révèle l'attention portée à l'expérience utilisateur. La bibliothèque readline transforme la saisie de commandes en véritable éditeur de texte intégré. Les utilisateurs d'emacs ou de vi retrouvent leurs raccourcis clavier familiers directement dans le shell. La complétion automatique devine les noms de fichiers, les commandes disponibles et les variables d'environnement. L'historique des commandes, héritage du C shell, transforme chaque session en une base de données personnelle d'instructions réutilisables.

L'une des forces de Bash réside dans la personnalisation. Chaque utilisateur peut façonner son environnement selon ses préférences grâce aux fichiers .bash_profile et .bashrc. L'invite de commande se pare de couleurs et d'informations contextuelles grâce aux séquences d'échappement. Certains affichent l'heure, d'autres le répertoire courant ou le niveau de charge du système. Cette flexibilité transforme le terminal de simple interface en véritable tableau de bord personnalisé.

La gestion des tâches héritée du Korn shell apporte une dimension multitâche au shell. Les utilisateurs jonglent entre plusieurs processus, les suspendent, les reprennent ou les relancent en arrière-plan. Les alias raccourcissent les commandes fréquentes, tandis que l'expansion des accolades multiplie les possibilités de génération de chaînes de caractères. Taper « file{1,2,3}.txt » génère automatiquement file1.txt, file2.txt et file3.txt.

La distribution de Bash illustre les méthodes de diffusion du logiciel libre des années 1990. Le code source circule via FTP anonyme depuis les serveurs du MIT et ses miroirs dispersés dans le monde entier. La Free Software Foundation commercialise des bandes magnétiques et des CD-ROM pour ceux qui préfèrent un support physique. Les premières distributions Linux adoptent une stratégie double : une version complète riche en fonctionnalités cohabite avec une version minimale destinée à remplacer directement /bin/sh.

L'évolution technique ne s'arrête jamais. Bash acquiert le support des tableaux unidimensionnels, copiant cette fonctionnalité du Korn shell. La complétion programmable se sophistique, permettant aux développeurs de spécifier des comportements sur mesure selon le contexte. Le chargement dynamique de commandes internes étend les capacités du shell pendant son exécution, transformant l'interpréteur en plateforme d'extension.

Grâce à sa portabilité remarquable, Bash tourne sur OS/2, DOS et Windows NT. QNX et Minix l'intègrent dans leurs distributions standard. Cette ubiquité renforce sa position de shell de référence et familiarise une génération d'utilisateurs à ses spécificités.

La communauté d'utilisateurs façonne Bash autant que ses développeurs officiels. Des milliers de retours d'expérience alimentent les cycles de développement. Les corrections de bogues arrivent du monde entier, transformant chaque version en effort collectif. Cette dynamique collaborative donne naissance à un outil exceptionnellement robuste et adapté aux besoins réels.

Bash finit par devenir bien plus qu'un simple shell : il incarne l'esprit UNIX dans sa version libre et démocratisée. Sa documentation complète, ses pages de manuel détaillées et sa maintenance active en font un compagnon fiable pour des générations de programmeurs et d'administrateurs système. Dans les serveurs web, les scripts de sauvegarde ou les chaînes d'intégration continue, Bash continue de traiter silencieusement des millions de tâches quotidiennes, héritier direct d'une tradition vieille de plusieurs décennies.