Bash (Bourne-Again shell) est un interpréteur en ligne de commande de type script. C'est le shell Unix du projet GNU. Fondé sur le Bourne shell (bsh ou encore simplement sh dans de nombreuses versions d'UNIX), Bash lui apporte de nombreuses améliorations, provenant notamment du Korn shell (ksh) et du C shell (csh). Bash est un logiciel libre publié sous GPL. Il est l'interprète par défaut sur de nombreux Unix libres, notamment sur les systèmes GNU/Linux. C'est aussi le shell par défaut de Mac OS X. Il a été d'abord porté sous Windows par le projet Cygwin, et depuis Windows 10 constitue une option à part entière du système d'exploitation.
Bash est une implémentation complète de la spécification du shell POSIX, mais avec l'édition en ligne de commande interactive et le contrôle des jobs sur les architectures qui le prennent en charge, des fonctionnalités de type csh et bien d'autres fonctionnalités.
Le 7 janvier 2019, l'équipe Bash a annoncé la disponibilité en téléchargement de la première version publique de bash-5.0, la cinquième version majeure du shell Unix du projet GNU. Cette version corrige plusieurs bogues majeurs dans bash-4.4 et introduit plusieurs nouvelles fonctionnalités. Dans un message publié dans la liste de diffusion du projet GNU, Chet Ramey, le mainteneur de Bash explique que les corrections de bogues les plus importantes sont une refonte de la résolution des variables nameref et un certain nombre d'erreurs de dépassement de mémoire découvertes via le fuzzing.
Les nouvelles fonctionnalités les plus remarquables incluent plusieurs nouvelles variables shell BASH_ARGV0, EPOCHSECONDS et EPOCHREALTIME. Les deux dernières sont similaires pour obtenir le nombre de secondes depuis l'epoch Unix (Unix Epoch), la seule différence étant que EPOCHREALTIME est en virgule flottante avec une granularité microseconde. Notons que l'epoch représente la date initiale à partir de laquelle est mesuré le temps par les systèmes d'exploitation.
Il existe un fichier config-top.h nouvellement défini dans Bash 5.0, qui permet au shell d'utiliser une valeur statique pour $PATH. Bash 5.0 dispose aussi d'une nouvelle option de shell qui peut activer et désactiver l'envoi de l'historique à syslog lors de l'exécution. Pour information, syslog est un protocole définissant un service de journaux d'événements d'un système informatique. Il désigne aussi le nom du format qui permet ces échanges.
Entre autres changements, notons que l'option globasciiranges est maintenant activée par défaut dans Bash 5.0, mais peut être désactivée par défaut au moment de la configuration. Le mode POSIX est maintenant capable d’activer l’option shift_verbose et l’option intégrée history de Bash 5.0 peut maintenant supprimer des plages d’entrées d’historique en utilisant -d start-end.
Il y a quelques changements incompatibles entre bash-4.4 et bash-5.0. D'après Chet Ramey, les modifications apportées à la façon dont les variables nameref sont résolues signifient que certaines utilisations de namerefs se comporteront différemment, bien qu’il ait essayé de réduire au minimum les problèmes de compatibilité.
En résumé, Bash 5.0 contient plusieurs correctifs par rapport à Bash 4.4, mais également un certain nombre de nouvelles fonctionnalités et améliorations visant à mieux se conformer aux spécifications POSIX. Pour des informations complètes sur bash 5.0, vous pouvez consulter ses notes de publication officielles.
Ces nouveautés et améliorations permettent certes à Bash d'être plus mature qu'il ne l'est déjà, mais qu'en est-il des alternatives comme le shell POSIX, Korn Shell, C Shell, PowerShell ou encore Z shell ? N'oublions pas non plus que la liste de shell s'est récemment rallongée avec PowerShell Core, l'édition open source de PowerShell qui fonctionne à la fois sous Linux, macOS et Windows. Ce projet est encore à ses débuts, mais on peut s'attendre à ce qu'il gagne rapidement en maturité vu que Microsoft réussit très bien dans l'open source actuellement.
Source : Annonce de la sortie de Bash 5.0
Et vous ?
Quel est votre shell préféré ? Pourquoi ce choix ?
Quels autres shell avez-vous déjà essayés ou utilisés ? Quels sont leurs avantages et inconvénients ?
Voir aussi :
PowerShell Core 6.1 est disponible : support de .NET Core 2.1, compatibilité avec les modules Windows, cmdlets et rendu Markdown et plus
Microsoft annonce la disponibilité générale de PowerShell Core 6.0, la première version de la nouvelle édition multiplateforme de PowerShell
Microsoft annonce la disponibilité de la préversion publique d'Azure Cloud Shell qui apporte une expérience Bash sur Azure
Windows 10 : la première build avec le support du Shell Unix Bash est disponible, pour les testeurs du programme Windows Insider
Microsoft apporte le shell Unix Bash à Windows 10, le résultat d'une collaboration avec Canonical
Bash 5.0 est maintenant disponible
La cinquième version majeure du shell du projet GNU apporte de nouvelles fonctionnalités et corrections de bogues
Bash 5.0 est maintenant disponible
La cinquième version majeure du shell du projet GNU apporte de nouvelles fonctionnalités et corrections de bogues
Le , par Michael Guilloux
Une erreur dans cette actualité ? Signalez-nous-la !