Bash, acronyme de Bourne-again shell, est le shell du projet GNU. Son nom est un jeu de mots sur le nom du shell historique d'Unix, le Bourne shell. Littéralement, Bourne again signifie « Bourne encore », mais se prononce également presque comme born again, signifiant « né de nouveau » ou encore « réincarné ». Également, to bash signifie « frapper violemment » en anglais.
Basé sur le Bourne shell, Bash lui apporte de nombreuses améliorations, provenant notamment du Korn shell et du C shell. Bash est un logiciel libre publié sous GNU 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 et il a été porté sous Windows par le projet Cygwin.
willy:~> set -o allexport off braceexpand on emacs on errexit off hashall on histexpand on history on ignoreeof off interactive-comments on keyword off monitor on noclobber off noexec off noglob off nolog off notify off nounset off onecmd off physical off posix off privileged off verbose off vi off xtrace off
Les options Shell peuvent être modifiées soit par rapport à celles par défaut à l'appel du Shell, soit aucours des traitements Shell. Elles peuvent être aussi intégrées aux fichiers de configuration des
ressources Shell.
La commande suivante exécute un script en mode compatible POSIX :
willy:~/scripts> bash --posix script.sh
Pour changer l'environnement temporairement, ou à l'usage d'un script, nous utiliserions plutôt set.
Employez - (moins) pour activer l'option, + pour la désactiver :
willy:~/test> set -o noclobber willy:~/test> touch test willy:~/test> date > test bash: test: cannot overwrite existing file willy:~/test> set +o noclobber willy:~/test> date > test
L'exemple ci-dessus montre l'usage de l'option noclobber , qui évite que les fichiers existants soient écrasés par les opérations de redirection. La même chose joue pour les options à 1 caractère, par exemple -u, qui, activée, traite les variables non déclarées comme des erreurs, et quitte un Shell non-interactif quand survient une telle erreur :
willy:~> echo $VAR willy:~> set -u willy:~> echo $VAR bash: VAR: unbound variable
Cette option est aussi utile pour détecter des valeurs incorrectes affectées à des variables : la même erreur se produira aussi, par exemple, quand une chaîne de caractère est affectée à une variable qui a été déclarée explicitement comme devant contenir une valeur numérique. Voici un dernier exemple qui illustre l'option noglob , laquelle empêche les caractères spéciaux d'être interprétés :
willy:~/testdir> set -o noglob willy:~/testdir> touch * willy:~/testdir> ls -l * -rw-rw-r-- 1 willy willy 0 Feb 27 13:37 *