Bash (shell Unix)

Bash est un shell Unix et un langage de commande écrit par Brian Fox pour le projet GNU en tant que logiciel libre remplaçant le shell Bourne . [13] [14] Publié pour la première fois en 1989, [15] il a été utilisé comme shell de connexion par défaut pour la plupart des distributions Linux . [16] Une version est également disponible pour Windows 10 via le sous-système Windows pour Linux . [17] C’est aussi le shell utilisateur par défaut dans Solaris 11. [18]Bash était également le shell par défaut dans toutes les versions d’ Apple macOS avant la version 2019 de macOS Catalina , qui a changé le shell par défaut en Zsh , bien que Bash reste disponible comme shell alternatif. [19]

Frapper
Capture d’écran d’une session Bash
Auteur(s) original(s) Brian Fox
Développeur(s) Chet Ramey [1] [2]
Première version 8 juin 1989 ; il y a 32 ans ( 08/06/1989 )
Version stable 5.1.16 [3] / 5 janvier 2022
Version d’aperçu 5.2-alpha [4] / 20 janvier 2022
Dépôt
  • git .savannah .gnu .org /cgit /bash .git
Écrit en C
Système opérateur
  • Comme Unix [5]
  • macOS ( GPL-2.0 ou version ultérieure ; GPL-3.0 ou version ultérieure disponible via des tiers)
  • Windows ( GPL-3.0 ou ultérieure ) [6] [7]
Plateforme GNOU
Disponible en Multilingue ( gettext )
Taper Shell Unix , langage de commande
Licence Depuis 4.0 : GPL-3.0 ou version ultérieure [8]
1.11 ? à 3.2 : GPL-2.0 ou version ultérieure [9]
0,99 ? à 1.05 ? : GPL-1.0 ou version ultérieure [10] [11] [12]
Site Internet www.gnu.org/software/bash/ _ _ _ _ _

Bash est un processeur de commandes qui s’exécute généralement dans une fenêtre de texte où l’utilisateur tape des commandes qui provoquent des actions. Bash peut également lire et exécuter des commandes à partir d’un fichier, appelé script shell . Comme la plupart des shells Unix, il prend en charge la globalisation des noms de fichiers ( correspondance générique), la canalisation , ici les documents , la substitution de commandes , les variables et les structures de contrôle pour les tests de condition et les itérations . Les mots clés , la syntaxe , les variables à portée dynamique et les autres caractéristiques de base dulanguage sont tous copiés à partir de sh . D’autres fonctionnalités, par exemple history , sont copiées de csh et ksh . Bash est un shell compatible Posix , mais avec un certain nombre d’extensions.

Le nom du coquillage est un acronyme de Bourne Again Shell , un jeu de mots sur le nom du coquillage Bourne qu’il remplace [20] et la notion d’être « né de nouveau ». [21] [22]

Une faille de sécurité dans Bash datant de la version 1.03 (août 1989), [23] baptisée Shellshock , a été découverte début septembre 2014 et a rapidement conduit à une série d’ attaques sur Internet . [24] [25] [26] Des correctifs pour corriger les bogues ont été mis à disposition peu de temps après que les bogues ont été identifiés.

Histoire

Brian Fox a commencé à coder Bash le 10 janvier 1988 [27] après que Richard Stallman soit devenu insatisfait du manque de progrès réalisé par un développeur précédent. [13] Stallman et la Free Software Foundation (FSF) ont envisagé un shell libre qui pourrait exécuter des scripts shell existants si stratégiques pour un système entièrement libre construit à partir de code BSD et GNU que c’était l’un des rares projets qu’ils ont eux-mêmes financés, avec Fox entreprenant le travail en tant qu’employé de la FSF. [13] [28] Fox a publié Bash en version bêta, version .99, le 8 juin 1989, [15] et est resté le principal mainteneur jusqu’à quelque temps entre la mi-1992 [29] et la mi-1994,[30] lorsqu’il a été licencié de la FSF [31] et que sa responsabilité a été transférée à un autre contributeur précoce, Chet Ramey. [32] [33] [34]

Depuis lors, Bash est devenu de loin le shell le plus populaire parmi les utilisateurs de Linux, devenant le shell interactif par défaut sur les différentes distributions de ce système d’exploitation [35] [36] (bien que le shell Almquist puisse être le shell de script par défaut) et sur les versions macOS d’Apple. avant Catalina en octobre 2019. [37] [38] [16] Bash a également été porté sur Microsoft Windows et distribué avec Cygwin et MinGW , sur DOS par le projet DJGPP , sur Novell Netware , sur OpenVMS par le projet GNV, [39 ] àArcaOS , [40] et à Android via diverses applications d’émulation de terminal.

En septembre 2014, Stéphane Chazelas, un spécialiste Unix/Linux, [41] a découvert un bug de sécurité dans le programme. Le bogue, divulgué pour la première fois le 24 septembre, a été nommé Shellshock et a reçu les numéros CVE – 2014-6271 , CVE- 2014-6277 et CVE- 2014-7169 . Le bogue était considéré comme grave, car les scripts CGI utilisant Bash pouvaient être vulnérables, permettant l’exécution de code arbitraire . Le bogue était lié à la façon dont Bash transmet les définitions de fonction aux sous-shells via des variables d’environnement . [42]

Caractéristiques

La syntaxe de commande Bash est un sur- ensemble de la syntaxe de commande Bourne shell. Bash prend en charge l’expansion des accolades , l’ Achèvement de la ligne de commande (achèvement programmable), [43] le débogage de base [44] et la gestion du signal (en utilisant trap) depuis bash 2.05a [45] , entre autres fonctionnalités. Bash peut exécuter la grande majorité des scripts shell Bourne sans modification, à l’exception des scripts shell Bourne tombant dans un comportement de syntaxe marginale interprété différemment dans Bash ou tentant d’exécuter une commande système correspondant à une nouvelle fonction intégrée Bash, etc. La syntaxe de commande Bash inclut des idées dessinées du KornShell (ksh) et duC shell (csh) tels que l’édition de la ligne de commande, l’historique des commandes ( historycommande ), [46] la pile de répertoires, les variables et et la $RANDOMsyntaxe de substitution de commande Posix .$PPID$(…)

Lorsqu’un utilisateur appuie sur la touche de tabulation dans un shell de commande interactif, Bash utilise automatiquement la complétion de la ligne de commande , depuis la version bêta 2.04, [47] pour faire correspondre les noms de programmes partiellement tapés, les noms de fichiers et les noms de variables. Le système de complétion de ligne de commande Bash est très flexible et personnalisable, et est souvent fourni avec des fonctions qui complètent les arguments et les noms de fichiers pour des programmes et des tâches spécifiques.

La syntaxe de Bash a de nombreuses extensions manquantes dans le shell Bourne. Bash peut effectuer des calculs d’entiers (“évaluation arithmétique”) sans générer de processus externes. Il utilise la ((…))commande et la $((…))syntaxe des variables à cet effet. Sa syntaxe simplifie la redirection des E/S . Par exemple, il peut rediriger la Sortie standard (stdout) et l’erreur standard (stderr) en même temps à l’aide de l’ &>opérateur. C’est plus simple à taper que l’équivalent Bourne shell ‘ command > file 2>&1’. Bash prend en charge la substitution de processus à l’aide de la syntaxe <(command)et >(command), qui remplace la sortie (ou l’entrée) d’une commande où un nom de fichier est normalement utilisé. (Ceci est implémenté via /proc/fd/canaux sans nom sur les systèmes qui le prennent en charge, ou via des canaux nommés temporaires si nécessaire).

Lors de l’utilisation du mot-clé ‘function’, les déclarations de fonction Bash ne sont pas compatibles avec les scripts Bourne/Korn/Posix (le KornShell a le même problème lors de l’utilisation de ‘function’), mais Bash accepte la même syntaxe de déclaration de fonction que les shells Bourne et Korn, et est conforme à Posix. En raison de ces différences et d’autres, les scripts shell Bash sont rarement exécutables sous les interpréteurs shell Bourne ou Korn, à moins qu’ils ne soient délibérément écrits avec cette compatibilité à l’esprit, ce qui devient moins courant à mesure que Linux se répand. Mais en mode Posix, Bash se conforme plus étroitement à Posix. [48]

Bash supporte ici les documents . Depuis la version 2.05b, Bash peut rediriger l’entrée standard (Stdin) à partir d’une “chaîne ici” en utilisant l’ <<<opérateur.

Bash 3.0 prend en charge la correspondance d’ expressions régulières dans le processus à l’ aide d’une syntaxe rappelant celle de Perl . [49]

En février 2009, [50] Bash 4.0 a introduit la prise en charge des Tableaux associatifs . [11] Les indices de Tableaux associatifs sont des chaînes, d’une manière similaire à AWK ou Tcl . [51] Ils peuvent être utilisés pour émuler des tableaux multidimensionnels. Bash 4 bascule également sa licence vers la GPL-3.0 ou ultérieure ; certains utilisateurs soupçonnent que ce changement de licence est la raison pour laquelle MacOS continue d’utiliser des versions plus anciennes. [52] Apple a finalement cessé d’utiliser Bash dans ses systèmes d’exploitation avec la sortie de MacOS Catalina en 2019. [19]

Expansion de l’accolade

L’expansion des accolades, également appelée alternance, est une fonctionnalité copiée du shell C . Il génère un ensemble de combinaisons alternatives. Les résultats générés n’ont pas besoin d’exister en tant que fichiers. Les résultats de chaque chaîne étendue ne sont pas triés et l’ordre de gauche à droite est conservé :

$ echo a { p,c,d,b } e singe as ade abe $ echo { a,b,c }{ d,e,f } ad ae af bd be bf cd ce cf

Les utilisateurs ne doivent pas utiliser les extensions d’accolades dans les scripts shell portables, car le shell Bourne ne produit pas la même sortie.

$ # Un shell traditionnel ne produit pas la même sortie $ /bin/sh -c ‘echo a{p,c,d,b}e’ a{p,c,d,b}e

Lorsque l’expansion des accolades est combinée avec des caractères génériques, les accolades sont développées en premier, puis les caractères génériques résultants sont remplacés normalement. Par conséquent, une liste des images JPEG et PNG dans le répertoire courant peut être obtenue en utilisant :

ls *. { jpg,jpeg,png } # se développe en *.jpg *.jpeg *.png – après quoi, # les caractères génériques sont traités echo *. { png,jp { e, } g } # echo montre juste les expansions – # et les accolades entre accolades sont possibles.

En plus de l’alternance, l’expansion des accolades peut être utilisée pour les plages séquentielles entre deux entiers ou caractères séparés par des points doubles. Les nouvelles versions de Bash permettent à un troisième entier de spécifier l’incrément.

$ echo { 1 ..10 } 1 2 3 4 5 6 7 8 9 10 $ echo fichier { 1 ..4 } .txt fichier1.txt fichier2.txt fichier3.txt fichier4.txt $ echo { a..e } abcde $ echo { 1 ..10..3 } 1 4 7 10 $ echo { a..j..3 } adgj

Lorsque l’Expansion de l’accolade est combinée à l’expansion de la variable (extension de paramètre AKA et substitution de paramètre ), l’expansion de la variable est effectuée après l’Expansion de l’accolade, ce qui, dans certains cas, peut nécessiter l’utilisation de la fonction evalintégrée, ainsi :

$ début = 1 ; end = 10 $ echo { $start .. $end } # échoue à se développer en raison de l’ordre d’évaluation {1..10} $ eval echo { $start .. $end } # l’expansion de la variable se produit puis la chaîne résultante est évaluée 1 2 3 4 5 6 7 8 9 10

Scripts de démarrage

Apprendre encore plus Cette section contient des instructions, des conseils ou du contenu pratique . ( janvier 2019 ) The purpose of Wikipedia is to present facts, not to train. Please help improve this article either by rewriting the how-to content or by moving it to Wikiversity, Wikibooks or Wikivoyage.

Lorsque Bash démarre, il exécute les commandes dans une variété de fichiers de points . Contrairement aux scripts shell Bash, les fichiers dot n’ont généralement pas l’autorisation d’exécution activée ni une directive d’interpréteur comme #!/bin/bash.

Exemple de démarrage Bash compatible avec Legacy

Le squelette ~/.bash_profileci-dessous est compatible avec le shell Bourne et donne une sémantique similaire à csh pour le ~/.bashrcet ~/.bash_login. Le est une évaluation de court-circuit qui teste si le nom de fichier existe et est lisible, en sautant la partie après si ce n’est pas le cas.[ -r filename ] && cmd&&

[ -r ~/.profil ] && . ~/.profile # configure l’environnement, une fois, syntaxe Bourne-sh uniquement si [ -n ” ​​$PS1 ” ] ; alors # sommes-nous interactifs ? [ -r ~/.bashrc ] && . ~/.bashrc # configuration tty/prompt/fonction pour les shells interactifs [ -r ~/.bash_login ] && . ~/.bash_login # toutes les tâches de connexion pour le shell de connexion uniquement fi # Fin du bloc “if” Problèmes de système d’exploitation au démarrage de Bash

Certaines versions d’ Unix et de Linux contiennent des scripts de démarrage du système Bash, généralement sous les /etcrépertoires. Bash les appelle dans le cadre de son initialisation standard, mais d’autres fichiers de démarrage peuvent les lire dans un ordre différent de celui de la séquence de démarrage documentée de Bash. Le contenu par défaut des fichiers de l’utilisateur racine peut également poser des problèmes, ainsi que les fichiers squelettes que le système fournit aux nouveaux comptes d’utilisateurs lors de la configuration. Les scripts de démarrage qui lancent le système X Window peuvent également faire des choses surprenantes avec les scripts de démarrage Bash de l’utilisateur pour tenter de configurer des variables d’environnement utilisateur avant de lancer le gestionnaire de fenêtres . Ces problèmes peuvent souvent être résolus à l’aide d’un fichier ~/.xsessionou ~/.xprofilepour lire le~/.profile— qui fournit les variables d’environnement dont les fenêtres shell Bash générées à partir du gestionnaire de fenêtres ont besoin, telles que xterm ou Gnome Terminal .

Portabilité

Invoquer Bash avec l’ –posixoption ou déclarer set -o posixdans un script oblige Bash à se conformer très étroitement à la norme Posix 1003.2 . [53] Les scripts shell bash destinés à la portabilité doivent prendre en compte au moins le standard shell Posix. Certaines fonctionnalités bash introuvables dans Posix sont : [53] [54]

  • Certaines options d’invocation étendues
  • Expansion de l’accolade
  • Tableaux et Tableaux associatifs
  • La construction de test étendu à double crochet [[ … ]]et sa correspondance de regex
  • La construction d’évaluation arithmétique à double parenthèses (uniquement (( … )); $(( … ))est Posix)
  • Certaines opérations de manipulation de chaînes dans l’expansion des paramètres
  • localpour les variables délimitées
  • Substitution de processus
  • Fonctions intégrées spécifiques à Bash
  • Coprocessus
  • Variables $EPOCHSECONDS et $EPOCHREALTIME [55]

Si un morceau de code utilise une telle fonctionnalité, cela s’appelle un “bashisme” – un problème pour une utilisation portable. Debian checkbashismset Vidar Holen shellcheckpeuvent être utilisés pour s’assurer qu’un script ne contient pas ces parties. [56] [57] La ​​liste varie en fonction du shell cible réel : la politique de Debian autorise certaines extensions dans leurs scripts (comme elles le sont dans le shell dash ), [54] tandis qu’un script destiné à prendre en charge les shells Bourne pré-Posix, comme autoconf , configuresont encore plus limités dans les fonctionnalités qu’ils peuvent utiliser. [58]

Raccourcis clavier

Bash utilise readline pour fournir des raccourcis clavier pour l’édition de la ligne de commande à l’aide des raccourcis clavier par défaut ( Emacs ). Les liaisons Vi peuvent être activées en exécutant set -o vi. [59]

La gestion des processus

Le shell Bash a deux modes d’exécution pour les commandes : batch et mode concurrent.

Pour exécuter des commandes en batch (c’est-à-dire en séquence), elles doivent être séparées par le caractère “;”, ou sur des lignes séparées :

commande1 ; commande2

dans cet exemple, lorsque la commande1 est terminée, la commande2 est exécutée.

Une exécution en arrière -plan de command1 peut se produire en utilisant (symbole &) à la fin d’une commande d’exécution, et le processus sera exécuté en arrière-plan, rendant immédiatement le contrôle au shell et permettant la poursuite de l’exécution des commandes.

commande1 &

Ou pour avoir une exécution simultanée de deux commande1 et commande2, elles doivent être exécutées dans le shell Bash de la manière suivante :

commande1 et commande2

Dans ce cas, la commande1 est exécutée en arrière-plan et le symbole, rendant immédiatement le contrôle au shell qui exécute la commande2 au premier plan.

Un processus peut être arrêté et le contrôle rendu à bash en tapant Ctrl+ zpendant que le processus s’exécute au premier plan. [60]

Une liste de tous les processus, à la fois en arrière-plan et arrêtés, peut être obtenue en exécutant jobs:

$ jobs [1]- Commande en cours d’exécution1 & [2]+ Commande arrêtée2

Dans la sortie, le nombre entre parenthèses fait référence à l’ID de la tâche. Le signe plus indique le processus par défaut pour bget fg. Les textes « En cours d’exécution » et « Arrêté » font référence à l’ état du processus . La dernière chaîne est la commande qui a démarré le processus.

L’état d’un processus peut être modifié à l’aide de diverses commandes. La fgcommande place un processus au premier plan, tandis bgqu’un processus arrêté s’exécute en arrière-plan. bget fgpeuvent prendre un identifiant de travail comme premier argument, pour spécifier le processus sur lequel agir. Sans un, ils utilisent le processus par défaut, identifié par un signe plus dans la sortie de jobs. La killcommande peut être utilisée pour terminer un processus prématurément, en lui envoyant un signal . L’ID de la tâche doit être spécifié après un signe de pourcentage :

tuer %1

Exécution conditionnelle

Bash fournit des séparateurs de commande “d’exécution conditionnelle” qui rendent l’exécution d’une commande contingente au code de sortie défini par une commande précédente. Par example:

cd ” $QUELQUE PART ” && ./faire_quelquechose || echo “Une erreur s’est produite” > & 2

./do_something n’est exécuté que si la commande cd (changer de répertoire) était “réussie” (renvoyait un état de sortie de zéro) et la commande echo ne serait exécutée que si la commande cd ou ./do_something renvoyait une “erreur” (statut de sortie non nul).

Pour toutes les commandes, l’état de sortie est stocké dans la variable spéciale $?. Bash prend également en charge et les formes d’évaluation de commande conditionnelle.if …;then …;else …;ficase $VARIABLE in $pattern)…;;$other_pattern)…;; esac

Rapport de bogue

Une commande externe appelée bashbug signale les bogues du shell Bash. Lorsque la commande est invoquée, elle affiche l’éditeur par défaut de l’utilisateur avec un formulaire à remplir. Le formulaire est envoyé par courrier aux responsables de Bash (ou éventuellement à d’autres adresses e-mail). [61] [62]

Achèvement programmable

Bash prend en charge la complétion programmable via les commandes intégrées complete, compoptet compgen. [63] La fonctionnalité est disponible depuis la version bêta de 2.04 publiée en 2000. [64] [65] Ces commandes permettent une spécification d’achèvement complexe et intelligente pour les commandes (c’est-à-dire les programmes installés), les fonctions, les variables et les noms de fichiers. [66]

Les deux commandes completeet compoptspécifient comment les arguments de certaines commandes ou options disponibles seront listés dans l’ entrée readline . Depuis la version 5.1, l’achèvement de la commande ou de l’option est généralement activé par la frappe après avoir tapé son nom. [66]Tab ↹

Historique des versions

Version Date de sortie Notes de version
bash-5.1 2020-12-07 Historique des versions de github NOUVELLES [11]
bash-5.0 2019-01-07 [67] [68] [69]
bash-5.0-rc1 2018-12-20
bash-5.0-beta2 2018-11-28
bash-5.0-beta 2018-09-17
bash-5.0-alpha 2018-05-22
bash-4.4 2016-09-15 historique des versions de github NOUVELLES v4.4
bash-4.4-rc2 2016-08-22
bash-4.4-rc1 2016-02-24
bash-4.4-beta2 2016-07-11
bash-4.4-beta 2015-10-12
bash-4.3 2014-02-26
bash-4.2 2011-02-13
bash-4.1 2009-12-31
bash-4.0 2009-02-20
bash-4.0-rc1 2009-01-12
bash-3.2 2006-10-11
bash-3.1 2005-12-08
bash-3.0 2004-08-03
bash-2.05b 2002-07-17
bash-2.05a 2001-11-16
bash-2.05 2001-04-09
bash-2.04 2000-03-21
bash-2.03 1999-02-19
bash-2.02 1998-04-18
bash-2.01 1997-06-05
bash-2.0 1996-12-31

Voir également

  • Portail de logiciels gratuits et open source
  • Comparaison des shells de commande

Références

  1. ^ Hamilton, Naomi (30 mai 2008). “L’AZ des langages de programmation : BASH/Bourne-Again Shell” . Monde informatique . Archivé de l’original le 8 novembre 2016 . Consulté le 1er mars 2022 .
  2. ^ Ramey, Chet (20 avril 2021). “Le shell GNU Bourne-Again” . Services d’infrastructure technologique . Université Case Western Reserve . Consulté le 1er mars 2022 .
  3. ^ “Bash-5.1 Correctif officiel 16” . Consulté le 4 février 2022 .
  4. ^ Chet Ramey (21 janvier 2022). “Bash-5.2-alpha disponible” . Consulté le 2 février 2022 .
  5. ^ “FAQ bash, version 4.14” . Archivé de l’original le 1er septembre 2018 . Consulté le 9 avril 2016 .
  6. ^ “Code source manquant – Conformité GPL ? · Numéro 107 · Microsoft/WSL” . GitHub . Archivé de l’original le 24 septembre 2019 . Consulté le 8 juillet 2016 .
  7. ^ “Bash GNU” . Softpédia . SoftNews. 23 janvier 2010. Archivé de l’original le 21 octobre 2017 . Consulté le 9 avril 2016 .
  8. ^ Projet GNU . “Fichier LISEZMOI” . Archivé de l’original le 26 avril 2019 . Consulté le 16 avril 2014 . Bash est un logiciel libre, distribué selon les termes de la licence publique générale [GNU] telle que publiée par la Free Software Foundation, version 3 de la licence (ou toute version ultérieure).
  9. ^ “bash-1.11” . oldlinux.org . Voir test.c pour la GPL-2.0 ou ultérieure
  10. ^ “bash-1.05.tar” . oldlinux.org .
  11. ^ un bc ” BashFAQ /061 – Wiki de Greg” . monwiki.wooledge.org . Archivé de l’original le 2 mars 2021 . Consulté le 1er mars 2021 .
  12. ^ “Existe-t-il un moyen de télécharger la source bash vraisemblablement initiale bash-0.99 ?” . unix.stackexchange.com .
  13. ^ un bc Richard Stallman ( transmis avec des commentaires par Chet Ramey) (10 février 1988). “GNU + BSD = ?” . Groupe de discussion : comp.unix.questions . Usenet : 2362@mandrill.CWRU.Edu . Archivé de l’original le 28 décembre 2021 . Consulté le 28 décembre 2021 . Pendant un an et demi, le shell GNU était “presque terminé”. L’auteur a fait des promesses répétées de livrer ce qu’il avait fait, et ne les a jamais tenues. Enfin, je ne pouvais plus croire qu’il livrerait jamais quoi que ce soit. Ainsi, Brian Fox, membre du personnel de la Fondation, implémente maintenant une imitation du shell Bourne.
  14. ^ Hamilton, Naomi (30 mai 2008), “The AZ of Programming Languages: BASH/Bourne-Again Shell” , Computerworld : 2, archivé de l’original le 6 juillet 2011 , récupéré le 21 mars 2011 , Quand Richard Stallman a décidé pour créer un remplacement complet des systèmes Unix alors encombrés, il savait qu’il devrait éventuellement avoir des remplacements pour tous les utilitaires courants, en particulier le shell standard, et ces remplacements devraient avoir une licence acceptable.
  15. ^ un b Brian Fox (transmis par Leonard H. Tower Jr.) (8 juin 1989). “Bash est en version bêta !” . Groupe de discussion : gnu.announce . Archivé de l’original le 4 mai 2013 . Consulté le 28 octobre 2010 .
  16. ^ a b Warren, Tom (4 juin 2019). “Apple remplace bash par Zsh comme shell par défaut dans macOS Catalina” . La Verge . Archivé de l’original le 10 juin 2019 . Consulté le 13 juin 2019 .
  17. ^ “Comment installer l’outil de ligne de commande du shell Bash sur Windows 10” . 28 septembre 2016. Archivé de l’original le 20 novembre 2016 . Consulté le 20 novembre 2016 .
  18. ^ “Modifications des fonctionnalités de l’environnement utilisateur” . Oracle. Archivé de l’original le 12 juin 2018 . Consulté le 8 juin 2018 .
  19. ^ un b Hughes, Matthew (4 juin 2019). “Pourquoi macOS Catalina utilise-t-il Zsh au lieu de Bash ? Licences” . Le prochain Web . Archivé de l’original le 31 décembre 2020 . Consulté le 12 janvier 2021 .
  20. ^ “J’obtiens presque un éditeur et un compilateur Linux” . Dr Dobb’s . Archivé de l’original le 2 mars 2021 . Consulté le 12 septembre 2020 .
  21. ^ Richard Stallman (12 novembre 2010). “À propos du projet GNU” . Fondation du logiciel libre . Archivé de l’original le 24 avril 2011 . Récupéré le 13 mars 2011 . “Bourne Again Shell” est une pièce de théâtre sur le nom Bourne Shell , qui était le shell habituel sur Unix.
  22. ^ Gattol, Markus (13 mars 2011), Bourne-again Shell , archivé de l’original le 9 mars 2011 , récupéré le 13 mars 2011 , Le nom est un jeu de mots sur le nom de la coquille Bourne (sh), un début et un important shell Unix écrit par Stephen Bourne et distribué avec la version 7 d’Unix vers 1978, et le concept d’être “né de nouveau”.
  23. ^ Chazelas, Stéphane (4 octobre 2014). “archives de la liste de diffusion oss-sec” . Seclists.org . Archivé de l’original le 6 octobre 2014 . Consulté le 4 octobre 2014 .
  24. ^ Leyde, John (24 septembre 2014). “Patch Bash MAINTENANT : le bogue ‘Shell Shock’ fait exploser OS X, les systèmes Linux grand ouverts” . Le Registre . Archivé de l’original le 16 octobre 2014 . Consulté le 25 septembre 2014 .
  25. ^ Perlroth, Nicole (25 septembre 2014). “Les experts en sécurité s’attendent à ce que le bogue logiciel ‘Shellshock’ dans Bash soit significatif” . Le New York Times . Archivé de l’original le 5 avril 2019 . Consulté le 25 septembre 2014 .
  26. ^ Seltzer, Larry (29 septembre 2014). “Shellshock rend Heartbleed insignifiant” . ZDNet . Archivé de l’original le 14 mai 2016.
  27. ^ Brian Fox (29 août 1996), shell.c , Free Software Foundation , archivé de l’original le 28 septembre 2018 , récupéré le 1er novembre 2010 , Date de naissance : dimanche 10 janvier 1988. Auteur initial : Brian Fox
  28. ^ Richard Stallman (3 octobre 2010). “À propos du projet GNU” . Fondation du logiciel libre . Archivé de l’original le 24 avril 2011 . Récupéré le 21 mars 2011 . Les employés de la Free Software Foundation ont écrit et maintenu un certain nombre de packages logiciels GNU. Deux notables sont la bibliothèque C et le shell. … Nous avons financé le développement de ces programmes parce que le projet GNU n’était pas seulement une question d’outils ou d’environnement de développement. Notre objectif était un système d’exploitation complet, et ces programmes étaient nécessaires pour atteindre cet objectif.
  29. ^ len (g…@prep.ai.mit.edu) (20 avril 1993). “Le Bulletin de janvier 1993 de GNU” . Groupe de discussion : gnu.announce . Usenet : gnusenet930421bulletin@prep.ai.mit.edu . Archivé de l’original le 2 mars 2021 . Consulté le 28 octobre 2010 .
  30. ^ Ramey, Chet (1er août 1994). “Bash – le shell GNU (Réflexions et leçons apprises)” . Revue Linux . Archivé de l’original le 5 décembre 2008 . Consulté le 13 novembre 2008 .
  31. ^ Chet Ramey (31 octobre 2010), Dates in your Computerworld interview , archivé de l’original le 20 juillet 2012 , récupéré le 31 octobre 2010
  32. ^ Chet Ramey (12 juin 1989). “Corrections et améliorations de Bash 0.99” . Groupe de discussion : gnu.bash.bug . Archivé de l’original le 10 novembre 2012 . Consulté le 1er novembre 2010 .
  33. ^ Chet Ramey (24 juillet 1989). “Quelques correctifs bash-1.02” . Groupe de discussion : gnu.bash.bug . Archivé de l’original le 10 novembre 2012 . Consulté le 30 octobre 2010 .
  34. ^ Brian Fox (2 mars 1990). “Disponibilité de bash 1.05” . Groupe de discussion : gnu.bash.bug . Archivé de l’original le 10 novembre 2012 . Consulté le 30 octobre 2010 .
  35. ^ Bresnahan, Christine; Blum, Richard (avril 2015). CompTIA Linux + Powered by Linux Professional Institute Study Guide: Exam LX0-103 et Exam LX0-104 (3e éd.). John Wiley & Sons, Inc. p. 5. ISBN 978-1-119-02122-3. Archivé de l’original le 2 mars 2021 . Consulté le 6 juin 2016 . Sous Linux, la plupart des utilisateurs exécutent bash car c’est le shell le plus populaire.
  36. ^ Danesh, Arman; Jang, Michael (février 2006). Maîtriser Linux . John Wiley & Sons, Inc. p. 363. ISBN 978-0-7821-5277-7. Archivé de l’original le 2 mars 2021 . Consulté le 6 juin 2016 . Le Bourne Again Shell (bash) est le shell le plus couramment installé avec les distributions Linux.
  37. ^ Foster-Johnson, Eric; Welch, John C.; Anderson, Michée (avril 2005). Début des scripts Shell . John Wiley & Sons, Inc. p. 6. ISBN 978-0-7645-9791-6. Archivé de l’original le 2 mars 2021 . Consulté le 6 juin 2016 . Bash est de loin le shell le plus populaire et constitue le shell par défaut sur les systèmes Linux et Mac OSX.
  38. ^ “Utilisez Zsh comme shell par défaut sur votre Mac – Assistance Apple” . Archivé de l’original le 2 décembre 2019 . Consulté le 1er juillet 2019 .
  39. ^ “Installation des nouveaux packages GNV” . Archivé de l’original le 3 octobre 2020 . Consulté le 4 septembre 2020 .
  40. ^ “Sous-systèmes de compatibilité” . Archivé de l’original le 23 septembre 2020 . Consulté le 4 septembre 2020 .
  41. ^ Juliana, Cino (10 juin 2017). “L’état de sortie de Linux bash et comment définir l’état de sortie dans bash – Techolac” . Archivé de l’original le 21 juin 2019 . Consulté le 21 juin 2019 .
  42. ^ Huzaifa Sidhpurwala (24 septembre 2014). “Attaque par injection de code de variables d’environnement spécialement conçues par Bash” . Chapeau rouge . Archivé de l’original le 25 septembre 2014 . Consulté le 25 septembre 2014 .
  43. ^ “Manuel de référence de Bash” . www.gnu.org . Archivé de l’original le 15 mars 2018 . Consulté le 27 mars 2018 .
  44. ^ “Débogage des scripts Bash” . tldp.org . Archivé de l’original le 4 novembre 2018 . Consulté le 20 novembre 2018 .
  45. ^ “Modifications de Bash [Bash Hackers Wiki (DEV 20200708T2203)]” . wiki-dev.bash-hackers.org . Archivé de l’original le 23 septembre 2019 . Consulté le 23 septembre 2019 .
  46. ^ “Manuel de référence de Bash” . www.gnu.org . Archivé de l’original le 15 septembre 2019 . Consulté le 15 septembre 2019 .
  47. ^ “Travailler de manière plus productive avec bash 2.x/3.x” . www.caliban.org . Archivé de l’original le 29 juin 2018 . Consulté le 21 juin 2018 .
  48. ^ “6.11 Bash Posix Mode” , The GNU Bash Reference Manual, for Bash, Version 4.1 , 23 décembre 2009, archivé de l’original le 3 décembre 2010 , récupéré le 26 octobre 2010
  49. ^ “Guide de script bash avancé” . www.tldp.org . Article 37.2 (Bash, version 3). Archivé de l’original le 5 mai 2017 . Consulté le 5 mars 2017 .
  50. ^ “Bash, version 4” . tldp.org . Archivé de l’original le 1er juillet 2018 . Consulté le 25 juin 2018 .
  51. ^ “Tableaux (Manuel de référence de Bash)” . www.gnu.org . Archivé de l’original le 11 juillet 2018 . Consulté le 4 juillet 2018 .
  52. ^ “macos – Mettre à jour bash vers la version 4.0 sur OSX” . Demandez différent . Archivé de l’original le 25 juin 2018 . Consulté le 25 juin 2018 .
  53. ^ un b Mendel Cooper. “Problèmes de portabilité” . Le projet de documentation Linux . ibiblio.org. Archivé de l’original le 27 janvier 2012 . Consulté le 26 janvier 2012 .
  54. ^ un b “10. Fichiers” . Manuel des règles Debian v4.5.0.2 . Archivé de l’original le 12 mai 2020 . Consulté le 11 mai 2020 .
  55. ^ “Comment formater la date et l’heure sous Linux, MacOS et Bash?” . Conseils de coque ! . Archivé de l’original le 3 juin 2020 . Consulté le 3 juin 2020 .
  56. ^ checkbashisms(1) – Manuel des commandes générales Linux
  57. ^ shellcheck(1) – Manuel des commandes générales Linux
  58. ^ “Coquille portable” . Autoconf . Archivé de l’original le 2 mars 2021 . Consulté le 20 janvier 2020 .
  59. ^ “Aide BASH – Un tutoriel Bash” . Hypexr.org. 5 octobre 2012. Archivé de l’original le 2 mars 2021 . Consulté le 21 juillet 2013 .
  60. ^ “Manuel de référence de Bash” . www.gnu.org . Archivé de l’original le 15 mars 2018 . Consulté le 27 mars 2018 .
  61. ^ bashbug (1) Archivé le 2 octobre 2018 à la Wayback Machine , die.net
  62. ^ “Commande Linux / Unix: bashbug” Archivé le 6 octobre 2014 sur la Wayback Machine , apple.com
  63. ^ “Manuel de référence de Bash” . c’est www.case.edu .
  64. ^ “Travailler de manière plus productive avec bash 2.x/3.x” . www.caliban.org . Archivé de l’original le 29 juin 2018 . Consulté le 21 juin 2018 .
  65. ^ “Index de /gnu/bash” . ftp.swin.edu.au . Archivé de l’original le 8 mars 2020 . Consulté le 15 septembre 2019 .
  66. ^ un b “Une Introduction à l’Achèvement Programmable” . tldp.org . Consulté le 21 janvier 2022 .
  67. ^ “Historique des versions de github NOUVELLES v5.0” . GitHub . Archivé de l’original le 4 mai 2022 . Consulté le 1er mars 2021 .
  68. ^ “Changements de Bash [Bash Hackers Wiki]” . Archivé de l’original le 18 mars 2020 . Consulté le 25 novembre 2019 .
  69. ^ “Version Bash-5.0 disponible” . listes.gnu.org . Archivé de l’original le 8 novembre 2020 . Consulté le 1er mars 2021 .

Liens externes

Wikimedia Commons a des médias liés à Bash .
Wikibooks a un livre sur le sujet : Bash Shell Scripting
  • Site officiel
  • Hamilton, Naomi (30 mai 2008). “L’AZ des langages de programmation : BASH/Bourne-Again Shell” . Monde informatique . Archivé de l’original le 8 novembre 2016.(entretien avec le mainteneur de GNU Bash, Chet Ramey)
ArchivéArchivé de l'originalBashConsultéscripts shell Bash
Comments (0)
Add Comment