Provided by: manpages-fr_4.18.1-1_all bug

NOM

       bash - Interpréteur de commandes GNU Bourne-Again SHell

SYNOPSIS

       bash [options] [chaîne_de_commande | fichier]

COPYRIGHT

       Bash is Copyright (C) 1989-2022 by the Free Software Foundation, Inc.

DESCRIPTION

       Bash est un interpréteur de commandes (shell) compatible sh qui exécute les commandes lues
       depuis l'entrée standard ou depuis un  fichier.  Bash  inclut  aussi  des  fonctionnalités
       utiles des interpréteurs de commandes Korn et C (ksh et csh).

       Bash  vise  à  être  une implémentation conforme à la partie relative aux interpréteurs de
       commandes et utilitaires des spécifications IEEE POSIX (norme IEEE 1003.1). Bash peut être
       configuré pour être conforme à la norme POSIX par défaut.

OPTIONS

       Toutes  les  options  d'interpréteur  monocaractères documentées dans la description de la
       commande interne set, y compris -o, peuvent être utilisées comme options si l'interpréteur
       est invoqué. De plus, bash accepte les options suivantes lors de son appel :

       -c        Si  l'option -c est présente, les commandes sont lues depuis le premier argument
                 chaîne_de_commande qui n’est  pas  une  option.  Si  des  arguments  suivent  la
                 chaîne_de_commande, le premier argument est assigné à $0 et tous les autres sont
                 affectés aux paramètres positionnels. Le nom de l'interpréteur, utilisé pour les
                 messages d'avertissement et d'erreur, est fixé par l'assignation à $0.
       -i        Si l'option -i est présente, l'interpréteur est interactif.
       -l        Faire  que  bash  se  comporte comme s'il avait été appelé comme interpréteur de
                 commandes de connexion (consultez APPEL ci-dessous).
       -r        Si  l'option  -r  est  présente,  l'interpréteur  devient  restreint  (consultez
                 INTERPRÉTEUR RESTREINT ci-dessous).
       -s        Si l'option -s est présente ou s'il ne reste plus d'argument après le traitement
                 des options, alors les commandes  sont  lues  depuis  l'entrée  standard.  Cette
                 option  permet  d'affecter  les  paramètres  positionnels  lors  de l'appel d'un
                 interpréteur interactif ou de la lecture de l'entrée à travers un tube.
       -v        Afficher les lignes en entrée de l'interpréteur lorsqu'elles sont lues.
       -x        Afficher les commandes et leurs arguments à mesure qu'elles sont exécutées.
       -D        Une liste de toutes les chaînes entre guillemets  doubles  précédées  de  $  est
                 affichée  sur  la  sortie  standard. Ce sont les chaînes qui sont soumises à une
                 traduction quand le paramètre linguistique régional n'est ni C  ni  POSIX.  Cela
                 implique l'option -n ; aucune commande ne sera exécutée.
       [-+]O [option_shopt]
                 option_shopt  est  une  des  options de l'interpréteur acceptées par la commande
                 interne shopt (consultez COMMANDES INTERNES DE  L'INTERPRÉTEUR  ci-dessous).  Si
                 option_shopt est présente, -O crée cette option ; +O la détruit. Si option_shopt
                 n'est pas fournie, les noms et valeurs des options de  l'interpréteur  acceptées
                 par  shopt  sont affichés sur la sortie standard. Si l'option d'appel est +O, la
                 sortie est affichée dans un format réutilisable en entrée.
       --        Deux caractères -- indiquent la fin des options et désactivent le traitement des
                 arguments.  Tous  les  arguments  après  le  --  sont  traités comme des noms de
                 fichiers et paramètres. - est équivalent à --.

       Bash reconnaît également plusieurs options multicaractères. Ces options doivent, pour être
       reconnues, apparaître sur la ligne de commande avant les options monocaractères.

       --debugger
              Prend  les  dispositions  pour que le paramétrage du traçage soit exécuté avant que
              l'interpréteur démarre. Enclenche le mode de traçage étendu  (consultez  ci-dessous
              la description de l'option extdebug de la commande interne shopt).
       --dump-po-strings
              Équivalent  à  -D,  mais  la  sortie  est  dans  le  format des fichiers po (objets
              portables) de l'outil GNU gettext.
       --dump-strings
              Équivalent à -D.
       --help Affiche un message d'aide sur la sortie standard et termine avec succès.
       --init-file fichier
       --rcfile fichier
              Exécuter les  commandes  contenues  dans  fichier  plutôt  que  celles  du  fichier
              d'initialisation  commun  à  tout  le  système  /etc/bash.bashrc  et que le fichier
              d'initialisation personnel standard  ~/.bashrc  si  l'interpréteur  est  interactif
              (consultez APPEL ci-dessous).

       --login
              Équivalent à -l.

       --noediting
              Ne  pas  utiliser  la  bibliothèque  GNU readline pour lire les lignes de commande,
              lorsque l'interpréteur est interactif.

       --noprofile
              Ne lire ni le fichier d'initialisation commun à tout le système /etc/profile ni les
              fichiers  personnels d'initialisation ~/.bash_profile, ~/.bash_login ou ~/.profile.
              Par défaut, bash lit ces  fichiers  lorsqu'il  est  appelé  comme  interpréteur  de
              commandes de connexion (consultez APPEL ci-dessous).

       --norc Ne  pas  lire  ou  exécuter  le  fichier  de configuration commun à tout le système
              /etc/bash.bashrc,  ni  le  fichier  personnel  d'initialisation  ~/.bashrc  lorsque
              l'interpréteur   est   interactif.   Cette   option   est  activée  par  défaut  si
              l'interpréteur est appelé sous le nom sh.

       --posix
              Aligner le comportement de bash sur la norme (mode POSIX), en ce qui  concerne  les
              options  dont  l'action par défaut diffère de la norme POSIX. La section VOIR AUSSI
              ci-dessous référence un document précisant la façon dont le mode POSIX  affecte  le
              comportement de bash.

       --restricted
              L'interpréteur devient restreint (consultez INTERPRÉTEUR RESTREINT ci-dessous).

       --verbose
              Équivalent à -v.

       --version
              Affiche le numéro de version de bash sur la sortie standard et termine avec succès.

ARGUMENTS

       S'il  reste  des arguments sur la ligne de commande après traitement des options et que ni
       l'option -c, ni l'option -s n'ont été fournies, le premier argument est  supposé  être  le
       nom  du fichier dans lequel lire les commandes d'interpréteur. Si bash est appelé de cette
       façon, le nom du fichier est affecté à $0 et les arguments restants aux autres  paramètres
       positionnels.  Bash  lit  et exécute les commandes depuis ce fichier, puis termine. L'état
       final de bash est l'état final de la dernière commande exécutée dans le script. Si  aucune
       commande  n'a été exécutée, l'état final est 0. Une tentative est d'abord faite de trouver
       le fichier dans le répertoire actuel et, si aucun  fichier  n'est  trouvé,  l'interpréteur
       cherche le script dans les répertoires contenus dans PATH.

APPEL

       Un interpréteur de commandes est dit de connexion (login shell) si le premier caractère de
       son argument numéro zéro est un - ou s'il est appelé avec l'option --login.

       Un interpréteur est interactif s'il est appelé sans argument  autre  que  des  options  (à
       moins  que  l'option  -s soit spécifiée) et sans l'option -c, dont l'entrée standard et la
       sortie d'erreur sont toutes deux connectées  à  des  terminaux  (comme  déterminé  par  la
       fonction  isatty(3)), ou s'il est appelé avec l'option -i. PS1 est créée et $- contient la
       lettre  i  si  bash  est  interactif,  ce  qui  permet  à  un  script  ou  à  un   fichier
       d’initialisation de tester cet état.

       Le  paragraphe suivant décrit comment bash exécute ses fichiers d'initialisation. Si un de
       ces fichiers existe mais n'est pas accessible en lecture, bash  signale  une  erreur.  Les
       tildes  sont remplacés par des noms de fichiers comme décrit ci-dessous dans Développement
       du tilde dans le paragraphe DÉVELOPPEMENTS.

       Lorsque bash est lancé comme interpréteur de commandes de connexion  interactif  ou  comme
       interpréteur  non  interactif  avec  l'option  --login, il lit et exécute tout d'abord les
       commandes se trouvant dans le fichier /etc/profile si ce fichier existe. Après lecture  de
       ce  fichier,  il  recherche  ~/.bash_profile, ~/.bash_login et ~/.profile, dans cet ordre,
       puis lit et exécute les  commandes  se  trouvant  dans  le  premier  fichier  existant  et
       accessible en lecture. L'option --noprofile peut être utilisée à l'appel de l'interpréteur
       pour empêcher ce comportement.

       Lorsqu'un interpréteur de commandes de connexion interactif termine, ou qu'un interpréteur
       de  commandes  de  connexion  non interactif exécute la commande interne exit, bash lit et
       exécute les commandes du fichier ~/.bash_logout, s'il existe.

       Quand un interpréteur interactif  démarre  sans  être  un  interpréteur  de  commandes  de
       connexion,  bash  lit  et  exécute  les  commandes  se  trouvant  dans /etc/bash.bashrc et
       ~/.bashrc s'ils existent. Ce comportement peut être empêché à l'aide de  l'option  --norc.
       L'option  --rcfile  fichier  forcera  bash  à  lire et exécuter les commandes dans fichier
       plutôt que dans /etc/bash.bashrc et ~/.bashrc.

       Quand bash est démarré de façon non interactive, par exemple pour  lancer  un  script,  il
       consulte  la  variable BASH_ENV dans l'environnement, développe son contenu si elle existe
       et considère cette valeur comme le nom d'un fichier à lire et exécuter. Bash  se  comporte
       comme si la commande suivante était exécutée :
              if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
       mais la valeur de la variable PATH n'est pas utilisée pour rechercher le fichier.

       Si  bash  est  appelé  sous le nom sh, il essaye d'imiter le comportement de démarrage des
       versions historiques de sh aussi fidèlement que possible, tout en restant  conforme  à  la
       norme  POSIX. Lorsqu'il est appelé comme interpréteur de commandes de connexion interactif
       ou non interactif avec l'option --login, il essaye d'abord de lire et exécuter,  dans  cet
       ordre,  les  commandes  de /etc/profile puis de ~/.profile. L'option --noprofile peut être
       utilisée pour empêcher ce comportement.  Quand  il  est  appelé  en  tant  qu'interpréteur
       interactif  sous le nom sh, bash consulte la variable ENV, développe sa valeur si elle est
       définie et utilise le résultat en tant que nom de fichier à lire  et  exécuter.  Comme  un
       interpréteur  appelé  sous le nom sh n'essaye ni de lire, ni d'exécuter des commandes d'un
       autre fichier de démarrage,  l'option  --rcfile  n'a  aucun  effet.  Un  interpréteur  non
       interactif  appelé  sous  le nom sh n'essaie de lire aucun autre fichier d'initialisation.
       Quand il est appelé sous le nom sh, bash entre en mode POSIX après avoir lu  les  fichiers
       d'initialisation.

       Quand  bash est appelé en mode POSIX comme avec l'option --posix sur la ligne de commande,
       il suit la norme POSIX pour les fichiers de démarrage. Dans  ce  mode,  les  interpréteurs
       interactifs  développent  la variable ENV et les commandes sont lues et exécutées à partir
       du fichier dont le nom est la valeur  développée.  Aucun  autre  fichier  d'initialisation
       n'est lu.

       Bash  tente de déterminer s'il est exécuté avec son entrée standard reliée à une connexion
       réseau, comme quand il est exécuté par le démon lançant les interpréteurs de  commandes  à
       distance historiques, généralement rshd, ou le démon d'interpréteur sécurisé sshd. Si bash
       conclut qu'il est exécuté de façon non interactive de cette manière, il lit et exécute les
       commandes de /etc/bash.bashrc et ~/.bashrc si ces fichiers existent et sont accessibles en
       lecture. Il n'a pas ce comportement lorsqu'il est appelé sous le nom sh.  L'option  --norc
       peut  être  utilisée pour empêcher ce comportement et l'option --rcfile peut être utilisée
       pour forcer la lecture d'un autre fichier, mais rshd et sshd n'appellent généralement  pas
       l'interpréteur avec ces options et ne permettent pas de les indiquer.

       Si  l'interpréteur  est  lancé  avec  un  identifiant  (de  groupe) d'utilisateur effectif
       différent de l'identifiant (de groupe) d'utilisateur réel et  si  l'option  -p  n'est  pas
       fournie,  aucun fichier d'initialisation n'est lu, les fonctions de l'interpréteur ne sont
       pas importées depuis  l'environnement,  les  variables  SHELLOPTS,  BASHOPTS,  CDPATH,  et
       GLOBIGNORE,  si  présentes  dans  l'environnement,  sont  ignorées,  et  l'identifiant  de
       l'utilisateur effectif est configuré à celui de l'utilisateur réel.  Si  l'option  -p  est
       fournie   à  l'appel,  le  comportement  au  démarrage  est  le  même  mais  l'identifiant
       d'utilisateur effectif n'est pas modifié.

DÉFINITIONS

       Les définitions suivantes sont utilisées dans toute la suite ce document.
       blanc  Une espace ou une tabulation.
       mot    Une suite de caractères considérée comme une unité élémentaire par  l'interpréteur.
              On parle également de lexème (« token »).
       nom    Un  mot  ne  contenant  que  des  caractères  alphanumériques  et  des  tirets  bas
              (« underscore »), commençant par  une  lettre  ou  un  tiret  bas.  On  s'y  réfère
              également sous le terme identificateur.
       métacaractère
              Un caractère qui, non protégé, sépare les mots. Un de ceux-ci :
              |  & ; ( ) < > space tab newline
       opérateur de contrôle
              Un lexème ayant une fonction de contrôle. C'est l'un des symboles suivants :
              || & && ; ;; ;& ;;& ( ) | |& <newline>

MOTS RÉSERVÉS

       Les  mots  réservés  sont des mots qui ont une signification spéciale pour l'interpréteur.
       Les mots suivants sont reconnus comme réservés lorsqu'ils ne sont  pas  protégés  et  sont
       soit  le premier mot d'une commande (consultez GRAMMAIRE DE L'INTERPRÉTEUR ci-dessous), le
       troisième mot d'une commande case ou select (seul in est valable),  ou  le  troisième  mot
       d'une commande for (seuls in et do sont valables) :

       !  case   coproc  do done elif else esac fi for function if in select then until while { }
       time [[ ]]

GRAMMAIRE DE L'INTERPRÉTEUR

       Cette partie décrit la syntaxe des différentes formes de commande de l'interpréteur.

   Commandes simples
       Une commande simple est une suite d'affectations facultatives de variables, suivie de mots
       séparés  par  des  blancs et de redirections, et terminée par un opérateur de contrôle. Le
       premier mot indique la commande à exécuter et est passé  comme  argument  zéro.  Les  mots
       restants sont transmis comme arguments à la commande appelée.

       La  valeur  renvoyée  par une commande simple est son état final ou 128+n si la commande a
       été terminée par le signal n.

   Pipelines
       Un pipeline est une suite d'une ou plusieurs commandes séparées par un des  opérateurs  de
       contrôle | ou |&. Le format d'un pipeline est :

              [time [-p]] [!] commande_1 [ [||&] commande_2 ... ]

       La  sortie  standard  de la commande_1 est connectée par un tube à l'entrée standard de la
       commande_2. Cette  connexion  est  effectuée  avant  toute  redirection  indiquée  par  la
       commande_1  (consultez  REDIRECTIONS  ci-dessous).  Si  |& est utilisé, la sortie d'erreur
       standard de la commande_1, en plus  de  sa  sortie  standard,  est  connectée  à  l'entrée
       standard de la commande_2 dans le tube ; c'est un raccourci pour 2>&1 |. Cette redirection
       implicite de la sortie d'erreur standard vers la sortie standard est réalisée après  toute
       redirection précisée par la commande_1.

       L'état  renvoyé  par  un  pipeline  est  l'état final de la dernière commande, à moins que
       l'option pipefail soit activée. Si pipefail est activée, l'état renvoyé  par  le  pipeline
       est la valeur de la dernière commande (la plus à droite) à terminer avec un état différent
       de zéro ou zéro si toutes les commandes se terminent avec succès.  Si  le  mot  réservé  !
       précède  un pipeline, l'état final de ce pipeline sera la négation logique de l'état final
       tel que décrit ci-dessus. L'interpréteur attend  que  toutes  les  commandes  du  pipeline
       soient terminées avant de renvoyer une valeur.

       Si  le  mot  réservé  time précède un pipeline, les temps passés par le programme en modes
       utilisateur et système sont indiqués quand le pipeline se termine. L'option -p modifie  le
       format  de sortie pour celui indiqué par POSIX. Quand l'interpréteur est en mode POSIX, il
       ne reconnaît pas time comme un mot réservé si le lexème suivant commence par un « - ».  La
       variable  TIMEFORMAT peut contenir une chaîne de format indiquant comment les informations
       de  chronométrage  doivent  être  affichées ;  consultez  ci-dessous  la  description   de
       TIMEFORMAT dans Variables de l'interpréteur.

       Quand  l'interpréteur  est  en  mode POSIX, time peut être suivi d'un changement de ligne.
       Dans ce cas, l'interpréteur affiche le temps utilisateur et  système  total  consommé  par
       l'interpréteur  et ses enfants. La variable TIMEFORMAT peut être utilisée pour indiquer le
       format des informations de temps.

       Toute commande dans un pipeline multicommande, où les tubes sont créés, est exécutée  dans
       un  sous-interpréteur qui est un processus séparé. Consultez ENVIRONNEMENT D'EXÉCUTION DES
       COMMANDES  pour  une  description  des  sous-interpréteurs  et   d'un   environnement   de
       sous-interpréteur. Si l'option lastpipe est activée en utilisant la commande interne shopt
       (consultez la description de shopt ci-dessous), le dernier élément d'un pipeline peut être
       exécuté par le processus de l'interpréteur quand le contrôle des tâches est désactivé.

   Listes
       Une  liste est une suite d'un ou plusieurs pipelines séparés par l'un des opérateurs ;, &,
       && ou || et facultativement terminée par ;, & ou <changement de ligne>.

       Dans cette liste d'opérateurs, && et || ont une priorité identique, suivis par ; et &, qui
       ont également une priorité identique.

       Une suite d'un ou plusieurs changements de ligne peut apparaître dans une liste à la place
       d'un point-virgule pour délimiter les commandes.

       Si une commande se termine par l'opérateur de  contrôle  &,  l'interpréteur  l'exécute  en
       arrière-plan,  dans  un  sous-interpréteur. L'interpréteur n'attend pas que la commande se
       termine et l'état renvoyé est 0. Elles sont désignées comme des commandes asynchrones. Les
       commandes  séparées  par  un  ;  sont  exécutées successivement, l'interpréteur attend que
       chaque commande se termine tour à tour. L'état renvoyé est l'état  final  de  la  dernière
       commande exécutée.

       Les listes ET et OU sont des suites d'un ou plusieurs pipelines séparés respectivement par
       les opérateurs de contrôle && et ||. Les listes ET et OU sont exécutées avec associativité
       à gauche. Une liste ET est de la forme

              commande_1 && commande_2

       commande_2  est  exécutée  si,  et  seulement si, commande_1 renvoie zéro comme état final
       (succès).

       Une liste OU a la forme

              commande_1 || commande_2

       commande_2 est exécutée si, et seulement si, commande_1 renvoie un état final différent de
       zéro.  L'état  renvoyé  par  des  listes ET et OU est l'état final de la dernière commande
       exécutée dans la liste.

   Commandes composées
       Une commande composée est l'une des constructions suivantes. Dans la plupart des cas,  une
       liste  dans  une description de commande pourrait être séparée du reste de la commande par
       un ou plusieurs changements de ligne, et pourrait être suivie d’un changement de  ligne  à
       la place d’un point-virgule.

       (liste)
              liste  est  exécutée dans un sous-interpréteur (consultez ENVIRONNEMENT D'EXÉCUTION
              DES   COMMANDES   ci-dessous   pour   une   description   d'un   environnement   de
              sous-interpréteur).  Les  affectations  de  variables et les commandes internes qui
              affectent l'environnement de l'interpréteur n'ont  pas  d'effet  une  fois  que  la
              commande se termine. L'état renvoyé est l'état final de la liste.

       { liste; }
              liste  est  simplement  exécutée  avec  l'environnement de l'interpréteur en cours.
              liste doit se terminer par un  changement  de  ligne  ou  un  point-virgule.  Cette
              construction  est  connue  sous  le  nom  de commandes groupées. L'état renvoyé est
              l'état final de la liste. Remarquez que contrairement aux métacaractères ( et ),  {
              et } sont des mots réservés qui ne doivent apparaître que là où un mot réservé peut
              être reconnu. Puisqu'ils ne conduiront pas à un découpage en mots, ils doivent être
              séparés de la liste par un blanc ou un autre métacaractère de l'interpréteur.

       ((expression))
              L'expression  est  évaluée  selon  les  règles  décrites ci-dessous dans ÉVALUATION
              ARITHMÉTIQUE. Si la valeur arithmétique de l'expression  est  différente  de  zéro,
              l'état  renvoyé  est  0 ;  sinon l'état renvoyé est 1. L'expression est sujette aux
              mêmes  développements  que  si  elle  était  entre  guillemets  doubles,  mais  les
              caractères  guillemet  double dans l'expression ne sont pas traités expressément et
              sont supprimés.

       [[ expression ]]
              Renvoie un état de 0 ou 1  selon  l'évaluation  de  la  condition  expression.  Les
              conditions  sont  composées  de primitives décrites ci-dessous dans CONDITIONS. Les
              mots entre [[ et ]] ne sont sujets ni au découpage en mots ni au développement  des
              chemins.  L'interpréteur  effectue le développement des tildes, des paramètres, des
              variables, le  développement  arithmétique,  la  substitution  de  commande  et  de
              processus,   ainsi   que   la   suppression  des  protections  sur  ces  mots  (les
              développements qui se produiraient si les mots étaient entre  guillemets  doubles).
              Les  opérateurs  conditionnels  comme  -f  ne doivent pas être protégés afin d'être
              reconnus comme primitives.

              Lorsqu'ils sont utilisés avec [[, les opérateurs < et > ordonnent d'un point de vue
              lexicographique en utilisant les paramètres linguistiques régionaux actuels.

       Consultez  la  description  de  la  commande interne test (consultez COMMANDES INTERNES DE
       L'INTERPRÉTEUR ci-dessous) pour la gestion des  paramètres  (c'est-à-dire  des  paramètres
       manquants).

       Quand  les opérateurs == et != sont utilisés, la chaîne placée à droite de l'opérateur est
       considérée comme étant un motif dont la correspondance est  recherchée  selon  les  règles
       décrites  ci-dessous  dans  Motifs génériques, comme si l’option extglob de l’interpréteur
       était activée. L’opérateur = est équivalent à ==. Si l'option  d'interpréteur  nocasematch
       est  activée,  la  mise  en  correspondance  est  effectuée  sans tenir compte de la casse
       (différence majuscule/minuscule) des caractères alphabétiques. La valeur renvoyée est 0 si
       les  chaînes  correspondent  (==) ou ne correspondent pas (!=), au motif et 1 sinon. Toute
       partie du motif peut être protégée pour forcer la partie protégée à correspondre  en  tant
       que chaîne.

       Un  opérateur  binaire supplémentaire, =~, est disponible, avec la même priorité que == et
       !=. Lorsqu'il est utilisé, la chaîne à droite de  l'opérateur  est  considérée  comme  une
       expression  rationnelle  étendue  POSIX  et  est mise en correspondance en conséquence (en
       utilisant habituellement les interfaces POSIX regcomp et regexec comme avec regex(3)).  La
       valeur  renvoyée est 0 si la chaîne correspond au motif et 1 si elle ne correspond pas. Si
       l'expression  rationnelle  n'est  pas  syntaxiquement  correcte,  la  valeur  renvoyée  de
       l'expression  conditionnelle est 2. Si l'option d'interpréteur nocasematch est activée, la
       mise en correspondance est effectuée sans tenir compte de la casse. Si une partie du motif
       est  protégée,  cette  partie  est mise en correspondance littéralement. Cela signifie que
       tout caractère dans la partie protégée doit correspondre lui-même, plutôt que d'avoir tout
       motif  particulier  correspondant ayant une signification. Si le motif est stocké dans une
       variable de l’interpréteur, la protection de développement  de  variable  force  le  motif
       entier à correspondre littéralement. Traitez prudemment les expressions entre crochets des
       expressions rationnelles, car les caractères de protection et de motifs habituels  perdent
       leur signification entre crochets.

       Le  motif  correspondra  s'il correspond à n'importe quelle partie de la chaîne. Ancrer le
       motif avec les opérateurs d'expression rationnelle ^ et $ pour le forcer à correspondre  à
       la  totalité de la chaîne. La variable tableau BASH_REMATCH enregistre quelle partie de la
       chaîne correspond au motif. L'élément de BASH_REMATCH d'indice 0 contient la partie de  la
       chaîne   correspondant  à  la  totalité  de  l'expression  rationnelle.  Les  sous-chaînes
       correspondant aux sous-expressions entre parenthèses dans  l'expression  rationnelle  sont
       sauvegardées avec les indices restants de BASH_REMATCH. L'élément de BASH_REMATCH d'indice
       n est la partie de la chaîne correspondant à la n-ième sous-expression entre  parenthèses.
       La  configuration  de  BASH_REMATCH par bash est de portée globale ; la déclarer comme une
       variable locale mènera à des résultats inattendus.

       Les expressions peuvent être combinées en utilisant les opérateurs suivants,  décrits  par
       ordre de priorité décroissante :

              ( expression )
                     Renvoie  la valeur de l'expression. Cela peut être utilisé pour surpasser la
                     priorité normale des opérateurs.
              ! expression
                     Vrai si expression est fausse.
              expression1 && expression2
                     Vrai si expression1 et expression2 sont toutes les deux vraies.
              expression1 || expression2
                     Vrai si expression1 ou expression2 est vraie.

              Les opérateurs && et || n'évaluent pas expression2  si  la  valeur  de  expression1
              suffit à déterminer la valeur renvoyée par la condition tout entière.

       for nom [ [ in [ mot ... ] ] ; ] do liste ; done
              La  liste  de  mots  suivant in est développée, produisant une liste d'éléments. La
              variable nom prend tour à tour la valeur  de  chacun  des  éléments  et  liste  est
              exécutée  à  chaque  fois. Si in mot est omis, la commande for exécute la liste une
              fois pour  chacun  des  paramètres  positionnels  existants  (consultez  PARAMÈTRES
              ci-dessous).  L'état  renvoyé est l'état final de la dernière commande exécutée. Si
              le développement des éléments suivant in conduit à une liste vide, aucune  commande
              n'est exécutée et l'état renvoyé est 0.

       for (( expr1 ; expr2 ; expr3 )) ; do liste ; done
              L'expression  arithmétique  expr1  est  d'abord  évaluée  selon les règles décrites
              ci-dessous  sous  ÉVALUATION  ARITHMÉTIQUE.  L'expression  arithmétique  expr2  est
              ensuite  évaluée  répétitivement  jusqu'à  valoir  zéro.  Chaque fois que expr2 est
              évaluée en une valeur différente  de  zéro,  liste  est  exécutée  et  l'expression
              arithmétique  expr3  est  évaluée.  Si  l'une  des  expressions est omise, elle est
              considérée comme s'évaluant à 1. La valeur renvoyée est l'état final de la dernière
              commande  dans  liste  qui  est  exécutée  ou  faux  si  l'une  des expressions est
              incorrecte.

       select nom [ in mot ] ; do liste ; done
              La liste de mots à la suite de in est développée, produisant une  liste  d'éléments
              et  l'ensemble  des  mots  développés  est imprimé sur la sortie d'erreur standard,
              chacun précédé par un nombre. Si in mot est omis, les paramètres positionnels  sont
              imprimés  (consultez  PARAMÈTRES  ci-dessous). select affiche alors l'invite PS3 et
              lit une ligne depuis l'entrée standard. Si la  ligne  est  constituée  d'un  nombre
              correspondant  à l'un des mots affichés, alors ce mot est affecté à la valeur de la
              variable nom. Si la ligne est vide, les mots et l'invite sont affichés  à  nouveau.
              Si  une  fin  de fichier (EOF) est lue, la commande select se termine et renvoie 1.
              Toute autre valeur lue force la variable nom à être définie à NULL.  La  ligne  lue
              est conservée dans la variable REPLY. La liste est exécutée après chaque sélection,
              jusqu'à ce qu'une commande break soit atteinte. L'état final de select  est  l'état
              final de la dernière commande exécutée dans la liste ou zéro si aucune commande n'a
              été exécutée.

       case mot in [ [(] motif [ | motif ] ... ) liste ;; ] ... esac
              Une commande case commence d'abord par développer le mot, puis essaye de le  mettre
              en  correspondance  tour  à  tour avec chacun des motifs en utilisant les règles de
              mise en correspondance dans Motifs génériques ci-dessous. Le mot est  développé  en
              utilisant  le  développement  du  tilde,  le  développement  des  paramètres et des
              variables,  le  développement  arithmétique,  la  substitution  de   commande,   la
              substitution  de  processus et la suppression des protections. Chaque motif examiné
              est développé  en  utilisant  le  développement  du  tilde,  le  développement  des
              paramètres  et  des  variables,  le  développement arithmétique, la substitution de
              commande et la substitution de processus et  la  suppression  des  protections.  Si
              l'option  d'interpréteur  nocasematch  est  activée,  la mise en correspondance est
              effectuée sans tenir compte de la casse des  caractères  alphabétiques.  Quand  une
              correspondance est trouvée, la liste associée est exécutée. Dès qu'un motif correct
              a été trouvé, il n'y a plus d'autre essai si l'opérateur ;; est utilisé. Si ;&  est
              utilisé au lieu de ;;, l'exécution continue avec la liste associée au jeu de motifs
              suivant. Si ;;& est utilisé au lieu de ;;, l'interpréteur essaye la liste de motifs
              suivante, si elle existe, et exécute toute liste associée à un motif correspondant,
              poursuivant l'exécution de la déclaration de  cas  comme  si  la  liste  de  motifs
              n'avait  pas  de  correspondance.  Le  code  de  retour  est zéro si aucun motif ne
              correspond. Sinon il est le code de retour de la dernière commande exécutée dans la
              liste.

       if liste; then liste; [ elif liste; then liste; ] ... [ else liste; ] fi
              La  liste  du  if  est  exécutée.  Si son état final est zéro, la liste du then est
              exécutée. Sinon, chacune des listes des elif est exécutée tour à  tour  et  si  son
              état  final  est  zéro,  la  liste  du  then associé est exécutée et la commande se
              termine. Sinon, la liste du else, si  présente,  est  exécutée.  L'état  final  est
              l'état  final  de la dernière commande exécutée ou zéro si aucune condition n'a été
              satisfaite.

       while liste-1; do liste-2; done
       until liste-1; do liste-2; done
              La commande while répète la liste liste-2 tant que la dernière commande de la liste
              liste-1  renvoie  un  état  final  de  zéro.  La  commande until est identique à la
              commande while, sauf que le test est inversé : la liste-2 est exécutée tant que  la
              dernière  commande  de  la  liste-1 renvoie un état final différent de zéro. L'état
              final des commandes while et  until  est  l'état  final  de  la  dernière  commande
              exécutée dans la liste-2 ou zéro si aucune commande n'a été exécutée.

   Coprocessus
       Un  coprocessus  est  une  commande  d'interpréteur précédée par le mot réservé coproc. Un
       coprocessus est exécuté de  façon  asynchrone  dans  un  sous-interpréteur,  comme  si  la
       commande  se  terminait  par l'opérateur de contrôle &, avec un tube bidirectionnel établi
       entre l'interpréteur d'exécution et le coprocessus.

       La syntaxe d'un coprocessus est :

              coproc [NOM] commande [redirections]

       Cela crée un coprocessus nommé NOM. commande peut être une commande simple ou une commande
       composée  (voir  plus haut). NOM est le nom d'une variable de l'interpréteur. Si NOM n'est
       pas fourni, le nom par défaut est COPROC.

       Le format recommandé à utiliser pour un coprocessus est le suivant :

              coproc [NOM] { commande [redirections]; }

       Cette forme est recommandée parce que des commandes simples font que  le  coprocessus  est
       toujours appelé COPROC, et elle est plus simple à utiliser et plus complète que les autres
       commandes composées.

       Si commande est une commande composée, NOM est optionnel. Le mot suivant coproc  détermine
       si  ce  mot  est  interprété  comme un nom de variable : il est interprété comme NOM si ce
       n'est pas un mot réservé qui introduit une commande composée. Si commande est une commande
       simple,  NOM  n'est  pas  permis ; cela est destiné à éviter une confusion entre NOM et le
       premier mot de la commande simple.

       Quand le coprocessus est exécuté, l'interpréteur  crée  une  variable  tableau  (consultez
       Tableaux ci-dessous) appelée NOM dans le contexte de l'interpréteur d'exécution. La sortie
       standard de commande  est  connectée  par  un  tube  à  un  descripteur  de  fichier  dans
       l'interpréteur  d'exécution,  et  ce descripteur de fichier est affecté à NOM[0]. L'entrée
       standard de commande  est  connectée  par  un  tube  à  un  descripteur  de  fichier  dans
       l'interpréteur d'exécution, et ce descripteur de fichier est affecté à NOM[1]. Ce tube est
       établi  avant  toute  redirection  indiquée  par  la  commande   (consultez   REDIRECTIONS
       ci-dessous).  Les  descripteurs  de  fichier  peuvent  être  utilisés  comme arguments aux
       commandes d'interpréteur et redirections en utilisant les développements standards de mot.
       Les  descripteurs  de  fichier  autres  que  ceux créés pour exécuter des substitutions de
       commande et de processus, ne sont pas disponibles dans les sous-interpréteurs.

       L'identifiant du processus (PID) de l'interpréteur engendré pour exécuter  le  coprocessus
       est  la  valeur  disponible  de  la  variable  NOM_PID. La commande interne wait peut être
       réutilisée pour attendre que le coprocessus soit terminé.

       Puisque le coprocessus est créé comme une  commande  asynchrone,  la  commande  coproc  se
       termine  toujours  avec  succès.  L'état  renvoyé  d'un  coprocessus  est  l'état final de
       commande.

   Définitions des fonctions de l'interpréteur
       Une fonction de l'interpréteur est un objet qui est appelé comme une  commande  simple  et
       qui  exécute  une  commande  composée  avec un nouveau jeu de paramètres positionnels. Les
       fonctions de l'interpréteur sont déclarées de la façon suivante :

       nomfonction () commande-composée [redirection]
       function nomfonction [()] commande-composée [redirection]
              Cela définit une fonction  possédant  le  nomfonction  mentionné.  Le  mot  réservé
              function  est  facultatif.  S'il  est fourni, les parenthèses sont facultatives. Le
              corps  de  la  fonction  est  la  commande  composée  commande-composée  (consultez
              Commandes  composées  ci-dessus).  Cette  commande  est  généralement  une liste de
              commandes entre { et }, mais peut  être  n'importe  quelle  commande  décrite  dans
              Commandes composées ci-dessus. Si le mot réservé function est utilisé, mais que les
              parenthèses  ne  sont  pas  fournies,   les   accolades   sont   recommandées.   La
              commande-composée est exécutée chaque fois que nomfonction est indiqué comme le nom
              d'une  commande  normale.  En  mode  POSIX,  nomfonction  doit   un   nom   valable
              d'interpréteur et ne peut pas être le nom d’une des commandes internes spéciales de
              POSIX (« special builtins »). En mode par défaut, un  nom  de  fonction  peut  être
              n'importe  quel  mot de l'interpréteur non protégé qui ne contient pas de $. Toutes
              les redirections (consultez REDIRECTIONS ci-dessous) indiquées lorsqu'une  fonction
              est  définie  sont  effectuées  lorsque la fonction est exécutée. Le code de retour
              d'une définition de fonction est zéro, à moins  qu'une  erreur  de  syntaxe  ne  se
              produise  ou  qu'une  fonction  en  lecture  seule  n'existe déjà avec le même nom.
              Lorsque la fonction est exécutée, le code  de  retour  est  celui  de  la  dernière
              commande exécutée dans le corps de la fonction (consultez FONCTIONS ci-dessous).

COMMENTAIRES

       Dans  un  interpréteur  non  interactif  ou  dans un interpréteur interactif avec l'option
       interactive_comments activée par la commande interne shopt (consultez  COMMANDES  INTERNES
       DE  L'INTERPRÉTEUR  ci-dessous),  un mot commençant par # conduit à ignorer ce mot et tous
       les  caractères  restants  sur  la  ligne.  Un  interpréteur  interactif   sans   l'option
       interactive_comments  n'autorise  pas  les commentaires. L'option interactive_comments est
       activée par défaut dans les interpréteurs interactifs.

PROTECTIONS

       Les  protections  (« quoting »)  permettent  de  forcer  l'interpréteur   à   ignorer   la
       signification  spéciale  de  certains  caractères  ou  mots.  Les protections peuvent être
       utilisées pour désactiver le traitement des caractères spéciaux, éviter la  reconnaissance
       des mots réservés ou empêcher le développement des paramètres.

       Tous  les  métacaractères  décrits  ci-dessus  dans  DÉFINITIONS  ont  des  significations
       spéciales pour l'interpréteur et doivent être protégés pour ne représenter que leur propre
       caractère.

       Lorsque les outils de développement de l'historique des commandes sont utilisés (consultez
       DÉVELOPPEMENT DE L'HISTORIQUE ci-dessous), le caractère de développement de  l'historique,
       généralement !, doit être protégé pour éviter le développement de l'historique.

       Il y a trois mécanismes de protection : le caractère de protection, les guillemets simples
       (« single quotes ») et les guillemets doubles (« double quotes »).

       Le caractère de protection est une contre-oblique (\) non protégée. Il préserve la  valeur
       littérale  du  caractère qui le suit, à l'exception du <changement de ligne>. Si un couple
       \<changement de ligne> apparaît et si la  contre-oblique  n'est  pas  elle-même  protégée,
       l'ensemble   \<changement  de  ligne>  est  considéré  comme  une  continuation  de  ligne
       (c'est-à-dire qu'il est supprimé du flux d'entrée et ignoré en pratique).

       Encadrer des caractères entre des guillemets  simples  préserve  la  valeur  littérale  de
       chacun des caractères entre guillemets simples. Un guillemet simple ne peut pas être placé
       entre deux guillemets simples, même s'il est précédé d'une contre-oblique.

       Encadrer des caractères entre des guillemets  doubles  préserve  la  valeur  littérale  de
       chacun  des  caractères  sauf  $,  `,  \  et, lorsque le développement de l'historique est
       activé, !. Quand  l'interpréteur  et  en  mode  POSIX,  le  !  n'a  pas  de  signification
       particulière entre des guillemets doubles, même quand le développement de l'historique est
       activé. Les caractères $ et ` conservent leurs significations spéciales  entre  guillemets
       doubles.  La  contre-oblique  ne  conserve  sa  signification spéciale que lorsqu'elle est
       suivie par l'un des caractères suivants :  $,  `,  ",  \  ou  <changement  de  ligne>.  Un
       guillemet  double  peut  être protégé entre deux guillemets doubles en étant précédé d'une
       contre-oblique. S'il est activé, le développement de l'historique sera effectué,  à  moins
       qu'un  !  apparaissant entre guillemets doubles ne soit protégé par une contre-oblique. La
       contre-oblique précédant le ! n'est pas supprimée.

       Les caractères spéciaux * et @ ont des significations  spéciales  lorsqu'ils  se  trouvent
       entre des guillemets doubles (consultez PARAMÈTRES ci-dessous).

       Les  séquences  de  caractères  de  la  forme  $'chaîne'  sont traitées comme une variante
       spéciale des guillemets simples. La séquence est développée en chaîne avec les  caractères
       protégés  par  contre-oblique  remplacés  comme indiqué par la norme ANSI C. Les suites de
       protection par contre-oblique, si présentes, sont décodées comme suit :
              \a     alerte (alarme) ;
              \b     effacement arrière (« backspace ») ;
              \e
              \E     caractère de protection ;
              \f     saut de page (« form feed ») ;
              \n     saut de ligne (« new line ») ;
              \r     retour chariot (« carriage return ») ;
              \t     tabulation horizontale ;
              \v     tabulation verticale ;
              \\     contre-oblique ;
              \'     guillemet simple ;
              \"     guillemet double ;
              \?     point d'interrogation ;
              \nnn   le caractère 8 bits dont la valeur en octal vaut nnn (un à trois chiffres) ;
              \xHH   le caractère 8 bits dont la valeur hexadécimale est HH (un ou deux  chiffres
                     hexadécimaux) ;
              \uHHHH le  caractère  Unicode  (ISO/IEC 10646) dont la valeur hexadécimale est HHHH
                     (un à quatre chiffres hexadécimaux) ;
              \UHHHHHHHH
                     le  caractère  Unicode  (ISO/IEC 10646)  dont  la  valeur  hexadécimale  est
                     HHHHHHHH (un à huit chiffres hexadécimaux) ;
              \cx    un caractère contrôle-x.

       Le  résultat  développé  est protégé par des guillemets simples comme si le symbole dollar
       n'avait pas été présent.

       Une chaîne entre guillemets doubles précédée d'un symbole dollar ($"chaine") conduira à la
       traduction  de  la  chaîne  selon  les  paramètres  linguistiques  régionaux  en  vigueur.
       L'infrastructure de gettext parcourt la chaîne et effectue la traduction, en utilisant les
       variables  de  l'interpréteur  LC_MESSAGES, TEXTDOMAINDIR et TEXTDOMAIN. Si les paramètres
       linguistiques régionaux actuels sont C ou POSIX, s'il n'y a pas de  traduction  disponible
       ou  si  la  chaîne  n'est  pas  traduite, le symbole dollar est ignoré. C'est une forme de
       double protection, ainsi la chaîne demeure entre guillemets  doubles  par  défaut  qu'elle
       soit  ou  non  traduite  et  remplacée.  Si  l'option  noexpand_translation est activée en
       utilisant la commande  interne  shopt,  les  chaînes  traduites  sont  protégées  par  des
       guillemets  simples  au  lieu  de  guillemets  doubles.  Consultez la description de shopt
       ci-dessous dans COMMANDES INTERNES DE L'INTERPRÉTEUR.

PARAMÈTRES

       Un paramètre est une entité permettant de stocker des valeurs. Il peut  être  un  nom,  un
       nombre  ou  un  des  caractères spéciaux décrits ci-dessous, dans Paramètres spéciaux. Une
       variable est un paramètre noté par un nom. Une variable possède  une  valeur  et  zéro  ou
       plusieurs  attributs. Les attributs sont affectés en utilisant la commande interne declare
       (consultez declare dans COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).

       Un paramètre est créé si une valeur lui a été affectée. La  chaîne  NULL  est  une  valeur
       correcte.  Une  fois qu'une variable est créée, elle ne peut être détruite qu'en utilisant
       la commande interne unset (consultez COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).

       Une variable peut recevoir une valeur par une affectation de la forme

              nom=[valeur]

       Si aucune valeur n'est indiquée, une chaîne NULL est affectée à la  variable.  Toutes  les
       valeurs  sont  sujettes  au  développement du tilde, des paramètres et des variables, à la
       substitution  de  commande,  au  développement  arithmétique  et  à  la  suppression   des
       protections  (consultez DÉVELOPPEMENTS ci-dessous). Si une variable a son attribut integer
       configuré, alors la valeur est soumise à l'évaluation arithmétique,  même  si  la  syntaxe
       $((...))   n'est  pas  utilisée  (consultez  Développement  arithmétique  ci-dessous).  Le
       découpage en mots et le développement des chemins ne sont pas effectués. Les  affectations
       peuvent  également  apparaître  comme  arguments des commandes internes suivantes : alias,
       declare, typeset, export, readonly et local (commandes de déclaration). En mode POSIX, ces
       commandes  internes  pourraient  apparaître  dans  une  commande  après  une  ou plusieurs
       instances de la commande interne command et conserver ces propriétés d’affectation.

       Dans le contexte où une affectation affecte une valeur à une variable de l'interpréteur ou
       à  un indice de tableau, l'opérateur += peut être utilisé pour ajouter ou additionner à la
       précédente valeur de la variable. Cela comprend des arguments pour les commandes internes,
       comme  declare,  qui  acceptent  des  affectations  (commandes  de  déclaration).  Lorsque
       l'opérateur += est appliqué  à  une  variable  dont  l'attribut  integer  (entier)  a  été
       positionné,  la  valeur  est évaluée comme une expression arithmétique et additionnée à la
       valeur actuelle de la variable qui est également évaluée. Lorsque += est  appliqué  à  une
       variable  tableau  en utilisant l'affectation composée (consultez Tableaux ci-dessous), la
       valeur de la variable n'est pas détruite (comme elle l'est lorsque = est utilisé)  et  les
       nouvelles  valeurs  sont  ajoutées au tableau, en commençant à l'indice maximal du tableau
       plus un (pour les tableaux indicés) ou ajoutées  comme  un  couple  clef  valeur  pour  un
       tableau  associatif.  Lorsque  l'opérateur  est appliqué à une variable de type chaîne, la
       valeur est développée et concaténée en valeur de la variable.

       L’attribut nameref peut être affecté à une variable en utilisant l’option -n des commandes
       internes  declare  et  local  (consultez  la  description  des  commandes declare et local
       ci-dessous) pour créer une nameref ou une référence vers une autre variable.  Cela  permet
       aux  variables  d’être manipulées indirectement. À chaque fois qu’une variable nameref est
       référencée, affectée, détruite ou a ses attributs modifiés (autrement qu'en  utilisant  ou
       en  changeant  l'attribut  nameref  lui-même),  l’opération  est  en  fait réalisée sur la
       variable indiquée par la valeur de la variable nameref. nameref est généralement  utilisée
       dans  des  fonctions  d’interpréteur pour référencer une variable dont le nom est passé en
       argument de la fonction. Par exemple, si un nom de variable est passé en premier  argument
       à une fonction d’interpréteur, exécuter
              declare -n ref=$1
       dans la fonction crée une variable de nameref ref dont la valeur est le nom de la variable
       passée en premier argument. Les références et affectations de ref et les modifications  de
       ses attributs sont traitées comme des références, affectations et modifications d'attribut
       sur la variable dont le nom a été passé par $1. Si la variable de contrôle dans une boucle
       for a l’attribut nameref, la liste de mots peut être une liste de variables d’interpréteur
       et une référence de nom est établie pour chaque mot de la liste, tour à tour,  lorsque  la
       boucle  est  exécutée.  L’attribut  nameref  ne  peut pas être donné aux variables de type
       tableau. Cependant, les variables nameref peuvent référencer des variables de type tableau
       et  des  variables de type tableau indicé. nameref peut être détruit en utilisant l’option
       -n de la commande interne unset. Sinon, si unset est exécuté avec le  nom  d’une  variable
       nameref en argument, la variable référencée par la variable nameref sera détruite.

   Paramètres positionnels
       Un paramètre positionnel est un paramètre noté par un ou plusieurs chiffres (à l'exception
       du chiffre 0 seul). Les paramètres  positionnels  sont  affectés  avec  les  arguments  de
       l'interpréteur  lors  de  son  appel. Ils peuvent être réaffectés avec la commande interne
       set. On ne peut pas utiliser les affectations pour les paramètres positionnels.  Ils  sont
       temporairement  remplacés  lors de l'exécution d'une fonction de l'interpréteur (consultez
       FONCTIONS ci-dessous).

       Un paramètre positionnel constitué  de  plusieurs  chiffres  doit  être  encadré  par  des
       accolades lors de son développement (consultez DÉVELOPPEMENTS ci-dessous).

   Paramètres spéciaux
       L'interpréteur   traite   plusieurs  paramètres  spécifiquement.  Ces  paramètres  peuvent
       uniquement être consultés, il n'est pas permis de leur affecter une valeur.
       *      Se développe en l'ensemble des paramètres positionnels, commençant par le  premier.
              Quand  le  développement  n’est  pas  entre guillemets doubles, tous les paramètres
              positionnels se développent  en  mots  séparés.  Dans  les  contextes  où  il  sont
              réalisés,  ces  mots sont soumis à d’autres découpages en mots et développements de
              chemin. Quand le développement se  produit  entre  des  guillemets  doubles,  *  se
              transforme  en  un  seul  mot  constitué  de  la  valeur  de  tous  les  paramètres
              positionnels séparés  par  le  premier  caractère  de  la  variable  spéciale  IFS.
              C'est-à-dire  que  "$*" est équivalent à "$1c$2c...", où c est le premier caractère
              de la valeur de la variable IFS.  Si  IFS  est  inexistante,  les  paramètres  sont
              séparés  par  des  espaces.  Si  IFS  est  NULL,  les  paramètres sont accolés sans
              séparateurs.
       @      Se développe en ensemble des paramètres positionnels, commençant  par  le  premier.
              Dans  les  contextes  où  le  découpage  en  mots  est  réalisé,  chaque  paramètre
              positionnel se développe en un mot séparé ; si ces  mots  ne  sont  pas  entre  des
              guillemets  doubles,  ils sont sujets au découpage de mot. Dans les contextes où il
              n'y a pas de découpage en mots, chaque paramètre positionnel se développe en un mot
              distinct  séparé  par  des  espaces. Quand le développement a lieu entre guillemets
              doubles, chaque paramètre se développe en un mot distinct.  C'est-à-dire  que  "$@"
              est équivalent à "$1" "$2" .... Si le développement des guillemets doubles survient
              dans un mot, le développement du premier paramètre est accolé à la première  partie
              du  mot d'origine et le développement du dernier paramètre est accolé à la dernière
              partie du mot d'origine. Quand il n'y a pas de paramètres positionnels, "$@" et  $@
              ne se développent en rien (c'est-à-dire qu'ils sont simplement éliminés).
       #      Correspond au nombre de paramètres positionnels, en base décimale.
       ?      Se développe en état final du dernier pipeline exécuté au premier plan.
       -      Est  remplacé  par la liste des options de l'interpréteur indiquées durant l'appel,
              configurées avec la commande  interne  set  ou  celles  créées  par  l'interpréteur
              lui-même (comme avec l'option -i).
       $      Se transforme en PID de l'interpréteur. Dans un sous-interpréteur, il se transforme
              en PID de l'interpréteur et non pas du sous-interpréteur.
       !      Se transforme en PID de la dernière tâche placée  en  arrière-plan,  soit  exécutée
              comme  une commande asynchrone, soit en utilisant la commande interne bg (consultez
              CONTRÔLE DES TÂCHES ci-dessous).
       0      Se développe en nom de l'interpréteur ou du script. Ce paramètre est créé  lors  de
              l'initialisation  de  l'interpréteur.  Si  bash  est  appelé  avec  un  fichier  de
              commandes, $0 correspond au nom de ce fichier. Si bash est lancé avec l'option  -c,
              alors $0 contient le premier argument, s'il y en a un, après la chaîne de commandes
              à exécuter. Sinon, ce paramètre contient le nom de  fichier  utilisé  pour  appeler
              bash, comme indiqué par l'argument zéro.

   Variables de l'interpréteur
       Les variables suivantes sont créées par l'interpréteur :

       _      Au  lancement  de  l'interpréteur,  contient le chemin d'accès utilisé pour appeler
              l'interpréteur, ou le  script  en  cours  d'exécution  tel  qu'il  est  passé  dans
              l'environnement ou dans la liste des arguments. Devient ensuite le dernier argument
              de la commande simple précédente exécutée au  premier  plan,  après  développement.
              Contient  également  le  chemin  d'accès  complet de chaque commande exécutée et se
              retrouve dans l'environnement exporté à cette commande. Lors de la vérification  de
              l'arrivée  de  courrier,  contient  le  nom  du  fichier  de  courrier  en cours de
              consultation.
       BASH   Se développe en chemin d'accès complet à l'instance actuelle de bash.
       BASHOPTS
              Liste des options activées de l'interpréteur, séparées par des  deux-points  « : ».
              Chaque  mot  de  la  liste  est un argument correct pour l'option -s de la commande
              interne shopt (consultez COMMANDES  INTERNES  DE  L'INTERPRÉTEUR  ci-dessous).  Les
              options  apparaissant  dans BASHOPTS sont celles indiquées comme actives par shopt.
              Si cette variable est dans l'environnement au lancement de bash, chaque  option  de
              la  liste  est  activée avant de lire les fichiers d’initialisation. Cette variable
              est en lecture seule.
       BASHPID
              Se transforme en PID du processus de l'interpréteur bash actuel. Diffère de $$ sous
              certaines conditions, comme dans les sous-interpréteurs ne nécessitant pas que bash
              soit réinitialisé. Les assignations à BASHPID n'ont pas  d”effet.  Si  BASHPID  est
              détruite,  elle  perd  ses  propriétés  spéciales,  même si elle est recréée par la
              suite.
       BASH_ALIASES
              Une variable de type tableau associatif dont les éléments correspondent à une liste
              interne  d'alias  comme  celle  gérée  par  la commande interne alias. Les éléments
              ajoutés à ce tableau apparaissent dans la liste d'alias ; cependant, la destruction
              d'éléments du tableau ne provoque pas actuellement le retrait des alias de la liste
              d'alias. Si BASH_ALIASES est détruite, elle perd ses propriétés spéciales, même  si
              elle est recréée par la suite.
       BASH_ARGC
              Une  variable  de type tableau contenant le nombre de paramètres de chaque trame de
              la pile d'appel d'exécution de l'interpréteur bash actuel. Le nombre de  paramètres
              du  sous-programme actuel (fonction de l'interpréteur ou du script exécuté par . ou
              source) est au sommet de la pile. Lorsqu'un sous-programme est exécuté,  le  nombre
              de  paramètres  passés  est  placé  dans  BASH_ARGC.  L'interpréteur crée BASH_ARGC
              seulement dans le mode de traçage étendu (consultez ci-dessous  la  description  de
              l'option extdebug de la commande interne shopt). La configuration de extdebug après
              que l'interpréteur ait démarré l'exécution d'un  script,  ou  le  référencement  de
              cette  variable  quand  extdebug  n'existe  pas, peut provoquer une incohérence des
              valeurs.
       BASH_ARGV
              Une variable de type tableau contenant tous  les  paramètres  de  la  pile  d'appel
              d'exécution  de  l'interpréteur  bash  actuel.  Le  dernier  paramètre  du  dernier
              sous-programme est au sommet de la pile ; le premier paramètre de  l'appel  initial
              est  en  bas.  Lorsqu'un  sous-programme  est  exécuté, les paramètres fournis sont
              placés dans BASH_ARGV. BASH_ARGV est créé uniquement dans le mode de traçage étendu
              (consultez  ci-dessous  la  description de l'option extdebug de la commande interne
              shopt).  La  configuration  de  extdebug  après  que  l'interpréteur  ait   démarré
              l'exécution  d'un  script,  ou  le  référencement  de cette variable quand extdebug
              n'existe pas peut provoquer une incohérence des valeurs.
       BASH_ARGV0
              Quand elle est référencée, cette variable développe le nom de l'interpréteur ou  du
              script de l'interpréteur (identique à $0 ; voir la description du paramètre spécial
              0 ci-dessus). L'affectation d'une valeur à BASH_ARGV0 fait  que  cette  valeur  est
              aussi  assignée  à  $0.  Si  BASH_ARGV0  est  détruite,  elle  perd  ses propriétés
              spéciales, même si elle est recréée par la suite.
       BASH_CMDS
              Une variable de type tableau associatif dont les éléments correspondent à une table
              de hachage interne de commandes comme celle gérée par la commande interne hash. Les
              éléments ajoutés à ce tableau apparaissent dans la table de hachage ; cependant, la
              destruction  d'éléments du tableau ne provoque pas actuellement le retrait des noms
              de commandes de la table de hachage. Si  BASH_CMDS  est  détruite,  elle  perd  ses
              propriétés spéciales, même si elle est recréée par la suite.
       BASH_COMMAND
              La  commande  en  cours  d'exécution  ou  sur le point d'être exécutée, à moins que
              l'interpréteur n'exécute une commande à la suite d'une capture, auquel cas c'est la
              commande  s'exécutant  au  moment de la capture. Si BASH_COMMAND est détruite, elle
              perd ses propriétés spéciales, même si elle est recréée par la suite.
       BASH_EXECUTION_STRING
              L'argument commande de l'option d'appel -c.
       BASH_LINENO
              Une variable de type tableau dont les  éléments  sont  les  numéros  de  ligne  des
              fichiers  sources  où  chaque  élément  correspondant  de  FUNCNAME  a été invoqué.
              ${BASH_LINENO[$i]}  est  le  numéro  de   la   ligne   dans   le   fichier   source
              (${BASH_SOURCE[$i+1]})  où ${FUNCNAME[$i]} a été appelé (ou ${BASH_LINENO[$i-1]} si
              consulté depuis une autre fonction de l'interpréteur). Utilisez LINENO pour obtenir
              le numéro de ligne actuel.
       BASH_LOADABLES_PATH
              Liste  des  répertoires,  séparés  par  des  deux-points  « : », que l'interpréteur
              consulte  lorsqu'il  cherche  les  commandes  internes  chargeables   dynamiquement
              spécifiées par la commande enable.
       BASH_REMATCH
              Une  variable  de  type  tableau  dont  les éléments sont affectés avec l'opérateur
              binaire =~ dans la commande conditionnelle [[. L'élément d'indice 0 est  la  partie
              de  la chaîne correspondant à l'expression rationnelle complète. L'élément d'indice
              n est la partie de la  chaîne  correspondant  à  la  n-ième  sous-expression  entre
              parenthèses.
       BASH_SOURCE
              Une variable de type tableau dont les éléments sont les noms des fichiers source où
              les noms des fonctions d'interpréteur correspondants à la variable de type  tableau
              FUNCNAME  sont définis. La fonction d'interpréteur ${FUNCNAME[$i]} est définie dans
              le fichier ${BASH_SOURCE[$i]} et appelée depuis ${BASH_SOURCE[$i+1]}.
       BASH_SUBSHELL
              Incrémentée dans tous les sous-interpréteurs et environnements de sous-interpréteur
              quand  l’interpréteur  commence  à  s’exécuter  dans  cet  environnement. La valeur
              initiale est 0. Si BASH_COMMAND est détruite, elle perd ses  propriétés  spéciales,
              même si elle est recréée par la suite.
       BASH_VERSINFO
              Une variable de type tableau protégée en écriture dont les éléments représentent la
              version de cette instance de bash.  Cette  valeur  est  affectée  aux  éléments  du
              tableau comme suit :
              BASH_VERSINFO[0]        Le numéro majeur de la version (release).
              BASH_VERSINFO[1]        Le numéro mineur de la version (version).
              BASH_VERSINFO[2]        Le niveau de correctif.
              BASH_VERSINFO[3]        Le numéro de compilation.
              BASH_VERSINFO[4]        Le statut de cette version (par exemple beta1).
              BASH_VERSINFO[5]        La valeur de MACHTYPE.
       BASH_VERSION
              Se  développe  en  une  chaîne  décrivant le numéro de version de cette instance de
              bash.
       COMP_CWORD
              Un indice dans ${COMP_WORDS} du mot contenant  la  position  actuelle  du  curseur.
              Cette  variable  n'est disponible que dans les fonctions de l'interpréteur appelées
              par les outils de complètement programmables (consultez  Complètement  programmable
              ci-dessous).
       COMP_KEY
              La  touche  (ou  dernière  touche  d'une suite de touches) utilisée pour appeler la
              fonction de complètement actuelle.
       COMP_LINE
              La ligne de commande  actuelle.  Cette  variable  n'est  disponible  que  dans  les
              fonctions  de  l'interpréteur appelées par les outils de complètement programmables
              (consultez Complètement programmable ci-dessous).
       COMP_POINT
              L'indice de la position actuelle  du  curseur  relatif  au  début  de  la  commande
              actuelle.  Si la position actuelle du curseur est à la fin de la commande actuelle,
              la valeur de cette  variable  est  égale  à  ${#COMP_LINE}.  Cette  variable  n'est
              disponible  que  dans  les  fonctions  de  l'interpréteur et les commandes externes
              appelées par les  outils  de  complètement  programmables  (consultez  Complètement
              programmable ci-dessous).
       COMP_TYPE
              Configurée  à une valeur entière correspondant au type de complètement essayé qui a
              provoqué l'appel d'une fonction de complètement : TAB pour un complètement  normal,
              ?  pour  l'affichage  des  complètements  après  tabulations  successives,  !  pour
              l'affichage des alternatives de complètement de mot partiel, @  pour  afficher  les
              complètements si le mot n'est pas modifié, ou % pour le menu de complètement. Cette
              variable n'est disponible que dans les fonctions de l'interpréteur et les commandes
              externes   appelées   par  les  outils  de  complètement  programmables  (consultez
              Complètement programmable ci-dessous).
       COMP_WORDBREAKS
              Le jeu de caractères que la bibliothèque readline considère  comme  séparateurs  de
              mots  lors  du  complètement de mot. Si COMP_WORDBREAKS est détruite, elle perd ses
              propriétés spéciales, même si elle est recréée par la suite.
       COMP_WORDS
              Une variable de type tableau (consultez Tableaux  ci-dessous)  consistant  en  mots
              individuels  de  la ligne de commande actuelle. La ligne est découpée en mots comme
              readline la découperait, en utilisant COMP_WORDBREAKS  tel  que  décrit  ci-dessus.
              Cette  variable  n'est disponible que dans les fonctions de l'interpréteur appelées
              par les outils de complètement programmables (consultez  Complètement  programmable
              ci-dessous).
       COPROC Une variable de type tableau (consultez Tableaux ci-dessous) créée pour représenter
              les descripteurs de fichier  pour  les  sorties  depuis  et  les  entrées  vers  un
              coprocessus non nommé (consultez Coprocessus ci-dessus).
       DIRSTACK
              Une  variable  de  type  tableau  (consultez  Tableaux  ci-dessous) représentant le
              contenu actuel de la pile de répertoires. Les répertoires apparaissent dans la pile
              dans l'ordre dans lequel la commande interne dirs les affiche. Les affectations des
              éléments de  cette  variable  tableau  peuvent  être  utilisés  pour  modifier  les
              répertoires  déjà  dans  la pile, mais les commandes internes pushd et popd doivent
              être utilisées pour ajouter et enlever  des  répertoires.  L'affectation  de  cette
              variable ne modifiera pas le répertoire actuel. Si DIRSTACK est détruite, elle perd
              ses propriétés spéciales, même si elle est recréée par la suite.
       EPOCHREALTIME
              À chaque fois que ce paramètre est consulté, il se développe en nombre de  secondes
              écoulées  depuis l'Epoch Unix (consultez time(3)) comme valeur en virgule flottante
              avec une granularité d'une microseconde.  Les  affectations  à  EPOCHREALTIME  sont
              ignorées.  Si  EPOCHREALTIME est détruite, elle perd ses propriétés spéciales, même
              si elle est recréée par la suite.
       EPOCHSECONDS
              À chaque fois que ce paramètre est consulté, il se développe en nombre de  secondes
              écoulées  depuis  l'Epoch Unix (consultez time(3)). Les affectations à EPOCHSECONDS
              sont ignorées. Si EPOCHSECONDS est détruite, elle perd  ses  propriétés  spéciales,
              même si elle est recréée par la suite.
       EUID   Contient   l'UID   effectif   de   l'utilisateur,   initialisé   au   démarrage  de
              l'interpréteur. Cette variable est en lecture seule.
       FUNCNAME
              Une variable  de  type  tableau  contenant  le  nom  de  toutes  les  fonctions  de
              l'interpréteur  actuellement dans la pile d'appel d'exécution. L'élément d'indice 0
              est le nom de  l'une  des  fonctions  en  cours  d'exécution  dans  l'interpréteur.
              L'élément  le  plus  bas  (celui  avec  l'indice  le  plus grand) est "main". Cette
              variable n'existe que si une fonction de l'interpréteur est en  cours  d'exécution.
              Les affectations de FUNCNAME n'ont aucun effet. Si FUNCNAME est détruite, elle perd
              ses propriétés spéciales, même si elle est recréée par la suite.

              Cette variable peut être utilisée avec BASH_LINENO et BASH_SOURCE.  Chaque  élément
              de  FUNCNAME  a  des  éléments  correspondant  dans BASH_LINENO et BASH_SOURCE pour
              décrire la pile d'appel. Par  exemple,  ${FUNCNAME[$i]}  a  été  appelé  depuis  le
              fichier  ${BASH_SOURCE[$i+1]}  à  la  ligne  numéro ${BASH_LINENO[$i]}. La commande
              interne caller affiche la pile d'appel actuelle utilisant ces renseignements.
       GROUPS Une variable de type tableau contenant la liste des groupes dont l'utilisateur  est
              membre.  Les affectations de GROUPS n'ont aucun effet. Si GROUPS est détruite, elle
              perd ses propriétés spéciales, même si elle est recréée par la suite.
       HISTCMD
              Le numéro d'historique, ou l'indice dans la file d'historique, de  la  commande  en
              cours.  Les  affectations  de  HISTCMD sont ignorées. Si HISTCMD est détruite, elle
              perd ses propriétés spéciales, même si elle est recréée par la suite.
       HOSTNAME
              Automatiquement configurée au nom de la machine actuelle.
       HOSTTYPE
              Automatiquement configurée en chaîne décrivant de façon unique le type  de  machine
              sur laquelle bash s'exécute. La valeur par défaut dépend du système.
       LINENO Chaque fois que ce paramètre est consulté, l'interpréteur le remplace par un nombre
              décimal représentant le numéro de la ligne actuelle (commençant à 1),  au  sein  du
              script  ou  de  la  fonction. Hors d'un script ou d'une fonction, la valeur n'a pas
              nécessairement de sens. Si LINENO est détruite, elle perd ses propriétés spéciales,
              même si elle est recréée par la suite.
       MACHTYPE
              Automatiquement  configurée  en chaîne décrivant le type du système sur lequel bash
              s'exécute, dans le format standard de GNU processeur-compagnie-système.  La  valeur
              par défaut dépend du système.
       MAPFILE
              Une variable de type tableau (consultez Tableaux ci-dessous) créée pour représenter
              le texte lu par la commande interne mapfile  si  aucun  nom  de  variable  n'a  été
              fourni.
       OLDPWD Le répertoire de travail précédent tel que configuré par la commande cd.
       OPTARG La  valeur  du  dernier  argument  d'option  traité par la commande interne getopts
              (consultez COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
       OPTIND L'indice du prochain argument à traiter par la commande interne getopts  (consultez
              COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
       OSTYPE Automatiquement configurée en chaîne décrivant le système d'exploitation sur lequel
              bash s'exécute. La valeur par défaut dépend du système.
       PIPESTATUS
              Une variable de type tableau (consultez Tableaux ci-dessous)  contenant  une  liste
              des  états finaux des processus exécutés dans le pipeline exécuté le plus récemment
              au premier plan (qui peut éventuellement contenir une seule commande).
       PPID   L'identifiant du processus parent de l'interpréteur. Cette variable est en  lecture
              seule.
       PWD    Le répertoire de travail actuel tel que configuré par la commande cd.
       RANDOM À  chaque  fois que ce paramètre est consulté, un entier aléatoire entre 0 et 32767
              est engendré. L'affectation d'une valeur à RANDOM initialise (ensemence)  la  suite
              de  nombres aléatoires. Si RANDOM est détruite, elle perd ses propriétés spéciales,
              même si elle est recréée par la suite.
       READLINE_ARGUMENT
              Tout argument numérique donné  à  une  commande  readline  qui  a  été  définie  en
              utilisant  "bind  -x"  (consultez  COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous)
              quand il a été invoqué.
       READLINE_LINE
              Le contenu du tampon de ligne readline, pour utiliser  avec  "bind  -x"  (consultez
              COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
       READLINE_MARK
              La  position  de  la  marque (point d'insertion enregistré) dans le tampon de ligne
              readline,  pour  utiliser  avec  "bind  -x"  (consultez   COMMANDES   INTERNES   DE
              L'INTERPRÉTEUR  ci-dessous). Les caractères entre le point d'insertion et la marque
              sont souvent appelés la zone.
       READLINE_POINT
              La position du point d'insertion dans le tampon de ligne  readline,  pour  utiliser
              avec "bind -x" (consultez COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).
       REPLY  Configurée  en  ligne  de  saisie  lue  par  la  commande interne read lorsqu'aucun
              argument n'a été fourni.
       SECONDS
              À chaque fois que ce paramètre est consulté, il se développe en nombre de  secondes
              écoulées  depuis  le  lancement  de  l'interpréteur.  Si  une valeur est affectée à
              SECONDS, la valeur renvoyée lors d’une consultation  ultérieure  est  le  temps  en
              seconde  écoulé  depuis  l'affectation,  ajouté  à la valeur affectée. Le nombre de
              secondes entre le moment du lancement de l'interpréteur et  l'heure  actuelle  sont
              toujours  déterminés  en  interrogeant  l'horloge système. Si SECONDS est détruite,
              elle perd ses propriétés spéciales, même si elle est recréée par la suite.
       SHELLOPTS
              Liste des options activées de l'interpréteur, séparées par des  deux-points  « : ».
              Chaque  mot  de  la  liste  est un argument correct pour l'option -o de la commande
              interne set  (consultez  COMMANDES  INTERNES  DE  L'INTERPRÉTEUR  ci-dessous).  Les
              options apparaissant dans SHELLOPTS sont celles indiquées comme actives par set -o.
              Si cette variable est dans l'environnement au lancement de bash, chaque  option  de
              la  liste  est  activée avant de lire les fichiers d’initialisation. Cette variable
              est en lecture seule.
       SHLVL  Incrémenté de 1 à chaque appel d'une instance de bash.
       SRANDOM
              Cette variable engendre un nombre pseudo-aléatoire de 32 bits chaque  fois  qu'elle
              est  consultée.  Le  générateur  de  nombres  aléatoires n'est pas linéaire sur les
              systèmes qui prennent en charge /dev/urandom ou  arc4random,  aussi  chaque  nombre
              renvoyé  n'a  aucune  relation avec les nombres précédents. Le générateur de nombre
              aléatoire ne peut pas être ensemencé, aussi les affectations à cette variable n'ont
              aucun  effet.  Si SRANDOM est détruite, elle perd ses propriétés spéciales, même si
              elle est recréée par la suite.
       UID    Contient l'UID de l'utilisateur actuel, initialisé au démarrage de  l'interpréteur.
              Cette variable est en lecture seule.

       Les variables suivantes sont utilisées par l'interpréteur. Dans certains cas, bash affecte
       des valeurs par défaut aux variables ; ces cas sont décrits ci-dessous.

       BASH_COMPAT
              La valeur est utilisée pour définir le niveau de compatibilité  de  l’interpréteur.
              Consultez  MODE  DE COMPATIBILITÉ DE L'INTERPRÉTEUR ci-dessous pour une description
              des différents niveaux de compatibilité et leurs conséquences. La valeur peut  être
              un  nombre  décimal  (par  exemple 4.2) ou entier (par exemple 42) correspondant au
              niveau de compatibilité voulu. Si BASH_COMPAT est détruite  ou  définie  comme  une
              chaîne  vide,  le  niveau  de compatibilité est défini à la valeur par défaut de la
              version  actuelle.  Si  BASH_COMPAT  est  définie  à  une  valeur  de   niveau   de
              compatibilité  impossible, l’interpréteur affiche un message d’erreur et définit le
              niveau de compatibilité à la valeur par défaut de la version actuelle. Les  valeurs
              possibles  correspondent  aux niveaux de compatibilité décrits ci-dessous dans MODE
              DE COMPATIBILITÉ DE L'INTERPRÉTEUR.  Par  exemple,  4.2  et  42  sont  des  valeurs
              possibles  qui  correspondent à l'option compat42 de shopt et définissent le niveau
              de compatibilité à 42. La version actuelle est aussi une valeur possible.
       BASH_ENV
              Si ce paramètre existe lorsque bash exécute un script,  sa  valeur  est  considérée
              comme un nom de fichier contenant les commandes d'initialisation de l'interpréteur,
              comme dans ~/.bashrc. La valeur  de  BASH_ENV  est  soumise  au  développement  des
              paramètres,  à  la  substitution de commande et au développement arithmétique avant
              d'être considérée comme un nom de fichier. PATH n'est pas utilisée pour  rechercher
              le fichier obtenu.
       BASH_XTRACEFD
              Si  configurée  à  une  valeur  entière  correspondant  à un descripteur de fichier
              correct, bash écrira la trace de sortie si set -x est activé vers ce descripteur de
              fichier.  Le  descripteur  de fichier est fermé quand BASH_XTRACEFD est détruite ou
              qu'une nouvelle valeur lui est affectée. Détruire BASH_XTRACEFD ou lui affecter  la
              chaîne  vide  conduit  la  trace  de  sortie à être envoyée vers la sortie d'erreur
              standard. Remarquez que configurer BASH_XTRACEFD à 2 (le descripteur de fichier  de
              la  sortie  d'erreur standard) puis la détruire revient à fermer la sortie d'erreur
              standard.
       CDPATH Le chemin de recherche de  la  commande  interne  cd.  Il  s'agit  d'une  liste  de
              répertoires,  séparés  par  des  deux-points  « : »,  que  l'interpréteur  consulte
              lorsqu'il cherche un sous-répertoire destination de la commande cd. Un  exemple  de
              valeur est ".:~:/usr".
       CHILD_MAX
              Définir  le nombre de valeurs d’état de sortie des enfants dont l’interpréteur doit
              se souvenir. Bash ne permettra pas à cette valeur d’être inférieure  à  un  minimum
              imposé par POSIX, ni d’être supérieure à une valeur maximale (8192 pour l’instant).
              La valeur minimale dépend du système.
       COLUMNS
              Utilisée par la commande composée select pour déterminer  la  largeur  du  terminal
              lors de l'affichage des listes de sélection. Automatiquement configurée si l’option
              checkwinsize est activée ou dans un interpréteur interactif  à  la  réception  d'un
              signal SIGWINCH.
       COMPREPLY
              Une  variable  de  type  tableau  dans  lequel bash lit les complètements possibles
              produits par une fonction de l'interpréteur appelée par les outils de  complètement
              programmables  (consultez  Complètement programmable ci-dessous). Chaque élément du
              tableau contient un complètement possible.
       EMACS  Si bash trouve cette variable dans l'environnement lorsque  l'interpréteur  démarre
              avec  la  valeur  "t",  il  considère  que  l'interpréteur est lancé dans un tampon
              d'interpréteur d'Emacs et désactive l'édition en ligne.
       ENV    Développé et exécuté de façon similaire  à  BASH_ENV  (consultez  APPEL  ci-dessus)
              quand l'interpréteur interactif est invoqué en mode POSIX.
       EXECIGNORE
              Une  liste,  séparée  par  des deux-points « : », de motifs de l'interpréteur (voir
              Motifs génériques) définissant la liste  de  noms  de  fichier  à  ignorer  par  la
              commande de recherche utilisant PATH. Les fichiers dont les noms de chemin complets
              correspondent à un de  ces  motifs  ne  sont  pas  considérés  comme  des  fichiers
              exécutables  en  vue  du  complètement et de l'exécution de commande au moyen d'une
              recherche dans PATH. Cela n'affecte pas le comportement des commandes  [,  test  et
              [[.  Les noms de chemin complets dans la table de hachage des commandes ne sont pas
              sujets  à  EXECIGNORE.  Utiliser  cette  variable  pour  ignorer  des  fichiers  de
              bibliothèque  partagée dont le bit exécutable est présent, mais qui ne sont pas des
              fichiers exécutables. La correspondance  de  motif  respecte  la  configuration  de
              l'option d'interpréteur extglob.
       FCEDIT L'éditeur par défaut utilisé par la commande interne fc.
       FIGNORE
              Une liste de suffixes, séparés par des deux-points « : », que bash ignorera lors du
              complètement des noms de  fichiers  (consultez  READLINE  ci-dessous).  Un  nom  de
              fichier dont le suffixe correspond à l'un de ceux mentionnés dans FIGNORE est exclu
              de la liste des noms de fichiers correspondant pour le complètement.  Par  exemple,
              cette variable peut prendre la valeur ".o:~" (des protections sont nécessaires pour
              l'affectation d'une valeur à cette variable qui contient des tildes).
       FUNCNEST
              Si configurée à une valeur numérique strictement positive, cela définit  le  niveau
              maximal  d'imbrication  de fonctions. Les invocations de fonctions qui dépassent ce
              niveau d'imbrication forceront la commande actuelle à abandonner.
       GLOBIGNORE
              Une liste de motifs séparés par des deux-points « : », définissant  l'ensemble  des
              noms  de  fichier à ignorer lors du développement des chemins. Si un nom de fichier
              correspondant à un des motif de développement des chemins correspond également à un
              des motifs dans GLOBIGNORE, il est supprimé de la liste des correspondances.
       HISTCONTROL
              Une  liste de valeurs, séparées par des deux-points « : », commandant la façon dont
              les commandes sont sauvegardées dans la file d'historique. Si la liste des  valeurs
              contient  la  valeur  ignorespace, les lignes commençant par une espace ne sont pas
              sauvegardées dans la file d'historique. La  valeur  ignoredups  conduit  à  ne  pas
              sauvegarder  une  ligne correspondant exactement à la ligne de commande précédente.
              La présence de ignoreboth est un condensé pour ignorespace et ignoredups. La valeur
              erasedups  conduit à retirer de la file d'historique toutes les lignes précédant la
              ligne actuelle et lui correspondant avant que cette ligne y soit sauvegardée. Toute
              valeur qui ne fait pas partie de la liste ci-dessus est ignorée. Si HISTCONTROL est
              inexistante ou si elle ne contient pas une valeur correcte, toutes les lignes  lues
              par  l'analyseur  de  l'interpréteur seront sauvegardées dans la file d'historique,
              selon la valeur de HISTIGNORE. La seconde ligne et  les  suivantes  d'une  commande
              multiligne ne sont pas testées et sont ajoutées dans l'historique indépendamment de
              la valeur de HISTCONTROL.
       HISTFILE
              Le nom du fichier dans lequel l'historique des commandes est sauvegardé  (consultez
              HISTORIQUE  ci-dessous).  Par défaut, il s'agit de ~/.bash_history. Si inexistante,
              l'historique des commandes n'est pas sauvegardé lorsqu'un interpréteur se termine.
       HISTFILESIZE
              Le nombre maximal de lignes contenues dans le  fichier  d'historique.  Quand  cette
              variable  contient une valeur, le fichier d’historique est tronqué, si besoin, pour
              ne pas contenir plus que ce nombre de lignes  en  enlevant  les  entrées  les  plus
              anciennes.  Ce fichier est aussi tronqué à cette taille après son écriture quand un
              interpréteur se termine. Si la valeur est 0, le fichier d’historique est tronqué  à
              une  taille nulle. Les valeurs non numériques ou négatives empêchent la troncature.
              L’interpréteur définit la valeur par défaut à la valeur de HISTSIZE après avoir  lu
              tous les fichiers d’initialisation.
       HISTIGNORE
              Une  liste de motifs, séparés par des deux-points « : », déterminant quelles lignes
              de commande devraient être sauvegardées dans la file d'historique. Chaque motif est
              accroché  au  début de la ligne et doit correspondre à celle-ci complètement (aucun
              ajout  de  « * »  implicite).  Chaque  motif  est  comparé  à  chaque  ligne  après
              application  des vérifications de HISTCONTROL. En plus des motifs génériques usuels
              de l'interpréteur, « & » correspond à la ligne précédente  de  l'historique.  « & »
              peut  être  protégée par une contre-oblique ; la contre-oblique est supprimée avant
              de tenter une comparaison.  La  seconde  ligne  et  les  suivantes  d'une  commande
              composée  multiligne ne sont pas testées et sont ajoutées dans l'historique quelque
              soit la valeur de HISTIGNORE. La correspondance de motif respecte la  configuration
              de l'option d'interpréteur extglob.
       HISTSIZE
              Le  nombre  de  commandes  à  mémoriser  dans  l'historique  (consultez  HISTORIQUE
              ci-dessous). Si la valeur est 0, les commandes ne sont  pas  sauvegardées  dans  la
              liste  d’historique.  Les  valeurs  négatives  permettent de sauvegarder toutes les
              commandes dans la liste  d’historique  (sans  limite).  L’interpréteur  définit  la
              valeur par défaut à 500 après avoir lu tous les fichiers d’initialisation.
       HISTTIMEFORMAT
              Si cette variable existe et n'est pas NULL, sa valeur est utilisée comme une chaîne
              de caractères par strftime(3) afin d'imprimer l'horodatage associé à chaque élément
              de  l'historique affiché par la commande interne history. Si cette variable existe,
              les horodatages sont écrits dans le fichier d'historique afin d'être  conservés  au
              fur  et  à  mesure  des  sessions  de  l'interpréteur. Cela utilise le caractère de
              commentaire  d'historique  pour  distinguer  l'horodatage  des  autres  lignes   de
              l'historique.
       HOME   Le  répertoire  d'accueil  de  l'utilisateur  actuel ;  l'argument par défaut de la
              commande interne cd. La valeur  de  cette  variable  est  aussi  utilisée  lors  du
              développement du tilde.
       HOSTFILE
              Contient  le  nom  d'un  fichier  ayant le même format /etc/hosts qui devra être lu
              lorsque l'interpréteur aura besoin de compléter un nom de  machine.  La  liste  des
              complètements possibles de noms de machine peut être changée pendant l'exécution de
              l'interpréteur ; à la tentative de  complètement  de  nom  de  machine  suivant  le
              changement  de  valeur,  bash  ajoute  le  contenu  du  nouveau  fichier à la liste
              existante. Si HOSTFILE existe mais est vide, ou désigne un fichier  non  accessible
              en  lecture, bash essaie de lire /etc/hosts pour obtenir la liste des complètements
              de noms de machine possibles. Lorsque HOSTFILE est détruite, la liste des  noms  de
              machine est effacée.
       IFS    Le séparateur de champs interneInternal Field Separator ») qui est utilisé pour
              le découpage en mots après les développements et pour découper les lignes  en  mots
              avec     la    commande    interne    read.    La    valeur    par    défaut    est
              « <espace><tab><changement_de_ligne> ».
       IGNOREEOF
              Commande le comportement d'un interpréteur interactif à la réception d'un caractère
              EOF  (fin  de fichier) comme unique saisie. Si elle existe, la valeur est le nombre
              de caractères EOF consécutifs qui doivent être tapés comme premiers caractères  sur
              une  ligne  de  saisie avant que bash ne termine. Si la variable existe mais que sa
              valeur n'est pas numérique ou si elle n'a pas de valeur, la valeur par  défaut  est
              10. Si elle n'existe pas, EOF signifie la fin de la saisie pour l'interpréteur.
       INPUTRC
              Le  nom  du  fichier d’initialisation pour readline, prioritaire sur le fichier par
              défaut de ~/.inputrc (consultez READLINE ci-dessous).
       INSIDE_EMACS
              Si cette variable apparaît dans  l'environnement  quand  le  script  démarre,  bash
              considère  qu'il s'exécute dans un tampon d'interpréteur d'Emacs et peut désactiver
              l'édition de ligne, suivant la valeur de TERM.
       LANG   Utilisée pour déterminer le paramètre linguistique régional  pour  toute  catégorie
              non spécifiquement sélectionnée par une variable commençant par LC_.
       LC_ALL Cette variable surpasse LANG et toute autre variable LC_ indiquant une catégorie de
              paramètres linguistiques régionaux.
       LC_COLLATE
              Cette variable détermine l'ordre de collation utilisé pour trier les  résultats  du
              développement   des   chemins   et   détermine   le  comportement  des  expressions
              d’intervalle, des classes d'équivalences  et  des  suites  de  collations  dans  le
              développement des chemins et la correspondance de motifs.
       LC_CTYPE
              Cette  variable  détermine  l'interprétation  des caractères et le comportement des
              classes de caractères lors du développement des  chemins  et  de  la  recherche  de
              correspondances de motifs.
       LC_MESSAGES
              Cette  variable  détermine le paramètre linguistique régional utilisé pour traduire
              les chaînes entre guillemets doubles précédées d'un $.
       LC_NUMERIC
              Cette variable détermine le paramètre linguistique régional utilisé  pour  formater
              les nombres.
       LC_TIME
              Cette  variable  détermine  le  paramètre  linguistique  régional  utilisé pour les
              données et le temps.
       LINES  Utilisée par la commande composée select pour déterminer  la  taille  des  colonnes
              lors de l'affichage des listes de sélection. Automatiquement configurée si l’option
              checkwinsize est activée ou dans un interpréteur interactif  à  la  réception  d'un
              signal SIGWINCH.
       MAIL   Si  ce  paramètre correspond à un nom de fichier ou de répertoire et si la variable
              MAILPATH est inexistante, bash informe l'utilisateur de l'arrivée de messages  dans
              le fichier indiqué ou le répertoire au format Maildir.
       MAILCHECK
              Indique  la  durée  (en  seconde)  au  bout  de laquelle bash vérifie si un nouveau
              message est arrivé. La valeur par défaut est  60 secondes.  Lorsque  le  délai  est
              écoulé,  l'interpréteur  vérifiera  la  présence  d'un  courrier électronique avant
              d'afficher son invite de base. Si cette variable est inexistante, ou  contient  une
              valeur strictement négative, l'interpréteur désactive la vérification du courrier.
       MAILPATH
              Une  liste  de noms de fichiers séparés par des deux-points « : », dans lesquels on
              vérifiera l'arrivée de courrier. Le nom d'un fichier peut  être  suivi  d'un  point
              d'interrogation  « ? »,  puis  d'une  chaîne  de  caractères indiquant le message à
              afficher en cas de courrier. Dans cette chaîne, le paramètre $_ correspond  au  nom
              du fichier de courrier actuel. Exemple :
              MAILPATH='/usr/spool/mail/bfox?"Vous   avez   du  courrier":~/shell-mail?"$_  a  du
              courrier !"'
              Bash peut être configurée pour fournir une valeur par défaut  pour  cette  variable
              (il  n'y  a  pas  de  valeur  par défaut), mais l'emplacement du fichier de boîte à
              lettres dépend du système (par exemple /var/mail/$USER).
       OPTERR Si configurée à la valeur 1, bash affiche les messages d'erreurs engendrés  par  la
              commande   interne   getopts   (consultez   COMMANDES  INTERNES  DE  L'INTERPRÉTEUR
              ci-dessous).  OPTERR  est  initialisée  avec  la  valeur  1  à  chaque   appel   de
              l'interpréteur ou au lancement d'un script.
       PATH   Le  chemin  de  recherche  des  commandes  à  exécuter.  Il  s'agit  d'une liste de
              répertoires,  séparés  par  des  deux-points  « : »  dans  lesquels  l'interpréteur
              recherche  les  commandes (consultez EXÉCUTION DES COMMANDES ci-dessous). Un nom de
              répertoire de taille nulle (NULL) dans la valeur  de  PATH  désigne  le  répertoire
              actuel.  Un  répertoire  NULL peut apparaître comme deux deux-points consécutifs ou
              comme des deux-points en début ou en fin. Le chemin par défaut dépend du système et
              est choisi par l'administrateur installant bash. Une valeur commune est
              ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''.
       POSIXLY_CORRECT
              Si cette variable existe dans l'environnement lorsque bash démarre,  l'interpréteur
              passe  en  mode POSIX avant de lire les fichiers d’initialisation comme si l'option
              --posix avait été fournie. Si elle est créée  pendant  que  l'interpréteur  est  en
              cours  d'exécution,  bash  active le mode POSIX comme si la commande set -o posix a
              été exécutée. Quand l'interpréteur passe en mode POSIX, il configure cette variable
              si elle ne l'a pas déjà été.
       PROMPT_COMMAND
              Si  cette  variable  existe et est un tableau, la valeur de chaque élément existant
              est exécutée comme commande préalablement à l'affichage de chaque invite  de  base.
              Si  elle existe mais n'est pas une variable de type tableau, sa valeur est utilisée
              comme commande à exécuter à la place.
       PROMPT_DIRTRIM
              Si elle contient un nombre supérieur à zéro, cette valeur est utilisée comme nombre
              de  répertoires  finaux à conserver lors du développement des protections de chaîne
              d'invite \w et \W (consultez INVITES ci-dessous).  Les  caractères  supprimés  sont
              remplacés par une ellipse.
       PS0    La  valeur  de  ce  paramètre  est  développée  (consultez INVITES ci-dessous) puis
              affichée par les interpréteurs interactifs après la lecture d'une commande et avant
              son exécution.
       PS1    La  valeur  de  ce  paramètre est développée puis utilisée comme chaîne d'invite de
              base (consultez INVITES ci-dessous). La valeur par défaut est « \s-\v\$  ».
       PS2    La valeur de ce paramètre est développée  comme  PS1  puis  utilisée  comme  chaîne
              d'invite secondaire. La valeur par défaut est « >  ».
       PS3    La  valeur  de  ce  paramètre  est  utilisée  comme  invite  de  la commande select
              (consultez GRAMMAIRE DE L'INTERPRÉTEUR ci-dessus).
       PS4    La valeur de ce paramètre est développée  comme  PS1  puis  affichée  avant  chaque
              commande affichée par bash lors d'un suivi d'exécution. Le premier caractère de PS4
              est répété autant de fois que nécessaire pour indiquer le niveau d'imbrication.  La
              valeur par défaut est « +  ».
       SHELL  Cette  variable  développe le chemin d'accès complet à l'interpréteur de commandes.
              Si elle est inexistante au démarrage de l'interpréteur, bash lui affecte le  chemin
              d'accès complet à l'interpréteur de commandes de connexion de l'utilisateur actuel.
       TIMEFORMAT
              La  valeur  de  ce  paramètre  est  utilisée en tant que chaîne de format indiquant
              comment les informations de paramétrage doivent être affichées pour  les  pipelines
              précédés  du  mot réservé time. Le caractère % introduit une suite de caractères de
              protection qui est développée en valeur de temps ou autre information.  Les  suites
              de  caractères  de  protection  et  leurs  significations  sont les suivantes ; les
              crochets marquent les parties facultatives.
              %%        Un % seul (non interprété).
              %[p][l]R  Le temps écoulé en seconde.
              %[p][l]U  Le temps processeur écoulé en mode utilisateur en seconde.
              %[p][l]S  Le temps processeur écoulé en mode système en seconde.
              %P        Le pourcentage de temps processeur utilisé calculé avec (%U + %S) / %R.

              Le p facultatif est un chiffre indiquant la précision, le nombre de chiffres  après
              la  virgule. Une valeur de 0 conduit à affichage de nombres entiers. Trois chiffres
              au plus peuvent être affichés après la virgule ; toute valeur supérieure à  3  sera
              modifiée en 3. Si p n'est pas précisé, la valeur 3 est utilisée.

              Le  l  facultatif  indique  un  format plus long, incluant les minutes, de la forme
              MMmSS.DDs. La valeur de p détermine si la partie décimale est affichée ou non.

              Si  cette  variable  n'existe  pas,  bash  agit  comme  si  elle  avait  la  valeur
              $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'.  Si  la valeur est NULL, aucune information
              de chronométrage n'est affichée. Un caractère final  de  changement  de  ligne  est
              ajouté quand la chaîne de format est affichée.
       TMOUT  Si  configurée en valeur strictement positive, TMOUT est traitée comme le délai par
              défaut pour la commande interne read. La commande select se termine s'il n'y a  pas
              de  saisie  au bout de TMOUT secondes lorsque l'entrée vient d'un terminal. Dans un
              interpréteur interactif, la valeur est interprétée comme une  durée  en  seconde  à
              attendre  une ligne de saisie après avoir affiché l'invite de base. Bash se termine
              après avoir attendu pendant ce temps en seconde si aucune saisie de ligne  complète
              n'est arrivée.
       TMPDIR Si  existante, bash utilise sa valeur comme nom de répertoire dans lequel bash crée
              les fichiers temporaires nécessaires au fonctionnement de l'interpréteur.
       auto_resume
              Cette  variable  commande  le   comportement   de   l'interpréteur   vis-à-vis   de
              l'utilisateur  et  du  contrôle des tâches. Si cette variable existe, les commandes
              simples constituées d'un seul mot, sans  redirection,  sont  considérées  comme  de
              possibles  relances  de  tâches  suspendues.  Aucune  ambiguïté  n'est possible, si
              plusieurs tâches commencent par la chaîne saisie, la tâche  à  laquelle  il  a  été
              accédé  le  plus  récemment est sélectionnée. Le nom d'une tâche suspendue, dans ce
              contexte, est la ligne de commande utilisée pour la  lancer.  Si  configurée  à  la
              valeur  exact,  la  chaîne  fournie doit correspondre exactement au nom d'une tâche
              suspendue ; si configurée à substring, la chaîne fournie doit  correspondre  à  une
              sous-chaîne   du  nom  de  la  tâche  suspendue.  La  valeur  substring  donne  une
              fonctionnalité analogue à l'identificateur de  tâche  %?  (consultez  CONTRÔLE  DES
              TÂCHES ci-dessous). Si configurée à toute autre valeur, la chaîne fournie doit être
              le préfixe du nom d'une tâche suspendue ; cela fournit une fonctionnalité  analogue
              à l'identificateur de tâche %string.
       histchars
              Les  deux  ou  trois  caractères  commandant le développement de l'historique et le
              découpage en lexèmes  (consultez  DÉVELOPPEMENT  DE  L'HISTORIQUE  ci-dessous).  Le
              premier  caractère  est  le  caractère  de développement de l'historique, celui qui
              indique le début d'un développement d'historique  (normalement  « ! »).  Le  second
              caractère  est  celui de substitution rapide, utilisé comme raccourci pour relancer
              la commande précédente, en modifiant une partie de la chaîne (par défaut « ^ »). Le
              troisième  caractère facultatif est celui qui indique, lorsqu'on le trouve en début
              de mot que le reste  de  la  ligne  est  un  commentaire  (normalement  « # »).  Ce
              caractère  de  commentaire  empêche  le développement de l'historique pour tous les
              mots restants sur la  ligne.  Il  ne  conduit  pas  nécessairement  l'analyseur  de
              l'interpréteur à considérer le reste de la ligne comme un commentaire.

   Tableaux
       Bash  fournit  des  variables de type tableau indicé ou associatif, à une dimension. Toute
       variable peut être utilisée comme tableau indicé ; la commande interne declare peut servir
       à  déclarer explicitement un tableau. Il n'y a pas de limitation maximale à la taille d'un
       tableau, ni d'obligation à indicer les éléments ou les affecter  de  façon  contiguë.  Les
       tableaux  indicés  sont  consultés  avec des entiers (évaluations arithmétiques comprises)
       commençant à zéro ; les tableaux associatifs sont consultés avec des chaînes  arbitraires.
       Sauf  mention  contraire,  les indices de tableaux indicés ne doivent pas être des entiers
       négatifs.

       Un tableau indicé est créé automatiquement si une  variable  quelconque  est  affectée  en
       utilisant  la  syntaxe  nom[indice]=valeur.  L'indice  est  traité  comme  une  expression
       arithmétique  et  doit  s'évaluer  en  un  nombre.  declare  -a  nom  permet  de  déclarer
       explicitement   un   tableau   indicé  (consultez  COMMANDES  INTERNES  DE  L'INTERPRÉTEUR
       ci-dessous). declare -a nom[indice] est aussi accepté ; l'indice est ignoré.

       Les tableaux associatifs sont créés en utilisant declare -A nom.

       Des attributs peuvent être indiqués pour une variable tableau en utilisant  les  commandes
       internes declare et readonly. Les attributs s'appliquent à tous les éléments d'un tableau.

       Les  tableaux  sont affectés en utilisant l'affectation composée de la forme nom=(valeur_1
       ... valeur_n), où chaque valeur peut être de la forme [indice]=chaîne. Les affectations de
       tableau  indicé  ne  nécessitent  rien  d’autre  que chaîne. Chaque valeur de la liste est
       développée en utilisant tous les développements de l'interpréteur décrits ci-dessous  dans
       DÉVELOPPEMENTS.  Lors de l'affectation de tableaux indicés, si les crochets et les indices
       facultatifs sont fournis, les affectations ont lieu en  conséquence ;  sinon  l'indice  de
       l'élément affecté est le dernier indice affecté plus un. L'indexation commence à zéro.

       Lors de l'affectation à un tableau associatif, les mots d'une affectation composée peuvent
       être soit des affectations pour lesquelles un indice est requis, soit une  liste  de  mots
       qui est interprétée comme une séquence alternant clés et valeurs : nom=( clé1 valeur1 clé2
       valeur2  ...).  Elles  sont  traitées  de  la  même  manière  que   nom=(   [clé1]=valeur1
       [clé2]=valeur2  ...).  Le  premier  mot de la liste détermine comment les autres mots sont
       interprétés ; toutes les affectations d'une liste doivent  être  du  même  type.  Lors  de
       l'utilisation  de  paires clé/valeur, les clés ne peuvent pas être absentes ou vides ; une
       valeur finale absente est traitée comme une chaîne vide.

       Cette syntaxe est aussi acceptée par la commande interne declare. Les éléments individuels
       du  tableau  sont affectés en utilisant la syntaxe nom[indice]=valeur présentée ci-dessus.
       Lors de l’affectation vers un tableau indicé, si nom est indicé avec un nombre négatif, ce
       nombre  est  considéré  comme  ajouté  à l'indice maximal de nom plus un, ainsi, un indice
       négatif compte à rebours depuis la fin du tableau  et  un  indice  -1  fait  référence  au
       dernier élément du tableau.

       L'opérateur  +=  ajoutera  à  une  variable tableau lors d'une affectation en utilisant la
       syntaxe d'affectation composée ; consultez PARAMÈTRES ci-dessous.

       Tout élément d'un tableau est accessible avec la notation  ${nom[indice]}.  Les  accolades
       sont nécessaires pour éviter les conflits avec le développement des chemins. Si indice est
       @ ou *, le mot se développe en tous les éléments de nom. Ces deux indices ne diffèrent que
       lorsque  le mot apparaît entre guillemets doubles. Si le mot est entre guillemets doubles,
       ${nom[*]} se développe en un seul mot contenant les valeurs de chaque élément  du  tableau
       séparées  par  le  premier  caractère  de  la variable spéciale IFS et ${nom[@]} développe
       chaque élément de nom en un mot distinct. Quand il n'y a pas d'élément  dans  le  tableau,
       ${nom[@]} ne se développe en rien. Si le développement entre guillemets doubles survient à
       l'intérieur d'un mot, le développement du premier  paramètre  est  accolé  à  la  première
       partie  du  mot original et le développement du dernier paramètre est accolé à la dernière
       partie du mot original. Le comportement est analogue à celui des paramètres spéciaux *  et
       @  (consultez  Paramètres  spéciaux  ci-dessus).  ${#nom[indice]}  s'évalue en longueur de
       l'élément ${nom[indice]}. Si l'indice est * ou @, il s'évalue en nombre d'éléments dans le
       tableau.  Si  l'indice utilisé pour référencer un élément de tableau indicé s'évalue en un
       nombre négatif, il est considéré comme ajouté à  l'indice  maximal  du  tableau  plus  un,
       ainsi,  un  indice  négatif compte à rebours depuis la fin du tableau et un indice -1 fait
       référence au dernier élément du tableau.

       Le référencement d'une variable tableau sans indice est équivalent au  référencement  d'un
       tableau  avec  un  indice de 0. Toute référence à une variable utilisant un indice valable
       est légale et bash créera un tableau si nécessaire.

       Une variable tableau est considérée configurée si une valeur a été affectée à  un  indice.
       La chaîne NULL est une valeur possible.

       Les  clefs  (indices)  d’un  tableau  peuvent  être  aussi  bien obtenues que les valeurs.
       ${!nom[@]} et ${!nom[*]} se développent en indices assignés dans la variable tableau  nom.
       Le  traitement  entre  guillemets  doubles  est  similaire au développement des paramètres
       spéciaux @ et * entre guillemets doubles.

       La commande interne  unset  sert  à  détruire  les  tableaux.  unset  nom[indice]  détruit
       l'élément  de tableau d'indice indice, pour à la fois les tableaux indicés et les tableaux
       associatifs.  Les  indices  négatifs  des  tableaux  indicés  sont  traités  comme  décrit
       précédemment.  Supprimer  le  dernier  élément  d'une  variable  tableau ne détruit pas la
       variable. unset nom, où nom est un tableau, supprime le tableau entier. unset nom[indice],
       où  indice  est un * ou un @, se comporte différemment selon que nom est un tableau indicé
       ou associatif. Si nom est un tableau associatif, la commande  détruit  l'élément  avec  un
       indice  *  ou  @.  Si  nom est un tableau indicé, unset supprime tous les éléments mais ne
       supprime pas le tableau lui-même.

       Lors de l'utilisation d'un nom de variable avec un indice comme  argument  d'une  commande
       comme   avec   unset,  sans  utiliser  la  syntaxe  des  développements  de  mots  décrite
       précédemment, l'argument est sujet au développement de  chemin.  Si  le  développement  de
       chemin n'est pas souhaité, l'argument doit être protégé.

       Les  commandes  internes  declare,  local  et readonly acceptent toutes une option -a pour
       préciser un tableau indicé et une option -A pour préciser un tableau  associatif.  Si  les
       deux  options  sont  fournies,  -A  est  prioritaire. La commande interne read accepte une
       option -a pour affecter une liste de mots lus depuis l'entrée standard  dans  un  tableau.
       Les  commandes  internes set et declare affichent les valeurs d'un tableau d'une façon qui
       permet de les réutiliser pour des affectations.

DÉVELOPPEMENTS

       Les développements sont appliqués à la ligne de commande après avoir été découpée en mots.
       Sept  types  de  développements  sont  effectués :  le  développement  des  accolades,  le
       développement du tilde, le développement des paramètres et des variables, la  substitution
       de  commande,  le développement arithmétique, le découpage en mots et le développement des
       chemins.

       L'ordre des développements est : développement des accolades ; développement du tilde, des
       paramètres,  des  variables  et arithmétique, et substitution de commande (effectuée de la
       gauche vers la droite) ; découpage en mots ; et développement des chemins.

       Sur  les  systèmes  qui  le  permettent,  un  développement  supplémentaire  a  lieu :  la
       substitution de processus. Il est réalisé en même temps que le développement du tilde, des
       paramètres, des variables et arithmétique, et que la substitution de commande.

       Après la réalisation de ces développements, les caractères de protection présents dans  le
       mot original sont supprimés à moins qu'ils n'aient été protégés eux-mêmes (suppression des
       protections)

       Seuls le développement des accolades, le découpage en mots et le développement des chemins
       peuvent  modifier  le nombre de mots. Les autres développements transforment un mot unique
       en un autre mot unique. La seule exception à cette règle est le développement de « $@ » et
       « ${nom[@]} »,  ainsi  que,  dans  la  plupart  des  cas,  $* et ${name[*]} comme expliqué
       précédemment (consultez PARAMÈTRES).

   Développement des accolades
       Le développement des accolades  est  un  mécanisme  permettant  de  produire  des  chaînes
       quelconques.  Il  est  similaire  au  développement des chemins, mais les noms de fichiers
       produits n'existent pas nécessairement. Les motifs qui seront développés prennent la forme
       d'un  préambule facultatif, suivi soit par une série de chaînes séparées par des virgules,
       soit par  l'expression  d'une  série  entre  accolades,  et  suivi  par  un  post-scriptum
       facultatif.  Le  préambule  est  inséré  devant  chacune  des  chaînes contenues entre les
       accolades et le post-scriptum est concaténé à la fin de chacune des  chaînes  résultantes,
       le développement se faisant de gauche à droite.

       Plusieurs  développements  d'accolades  peuvent  être  imbriqués.  Les résultats de chaque
       développement ne sont pas triés, l'ordre de gauche à  droite  est  conservé.  Par  exemple
       a{d,c,b}e se développe en « ade ace abe ».

       Une  expression  de  séquence  est  de  la  forme  {x..y[..incr]}, où x et y sont soit des
       entiers, soit des lettres uniques, et  incr,  un  incrément  facultatif,  est  un  entier.
       Lorsqu'il s'agit d'entiers, l'expression est remplacée par la liste des nombres entre x et
       y inclus. Les entiers fournis peuvent être préfixés par 0 pour forcer chaque terme à avoir
       la même longueur. Si x ou y commencent par un zéro, l'interpréteur essaiera de forcer tous
       les termes créés à la même longueur, en ajoutant des  zéros  au  besoin.  S'il  s'agit  de
       lettres,  l'expression  se  développe  en  l’ensemble  des caractères situés entre x et y,
       inclus, d'un point de vue lexicographique en utilisant les paramètres régionaux par défaut
       de  C.  Remarquez  que x et y doivent être du même type (entier ou lettre). Si l'incrément
       est fourni, il est utilisé comme différence entre chaque terme. L'incrément par défaut est
       1 ou -1 suivant les valeurs de x et y.

       Le  développement  des  accolades  est effectué avant tout autre développement et tous les
       caractères ayant une signification spéciale pour les autres développements sont  conservés
       dans  le résultat. Il s'agit d'une modification purement littérale. Bash n'effectue aucune
       interprétation syntaxique du texte entre les accolades.

       Un développement d'accolades correctement formé doit contenir des  accolades  ouvrante  et
       fermante  non  protégées  et  au moins une virgule non protégée ou une expression de série
       correcte. Tout développement d'accolades incorrectement formé est laissé inchangé. Un { ou
       un  ,  peuvent  être  protégés  par une contre-oblique pour éviter d'être considérés comme
       partie d'une expression entre accolades. Pour éviter tout conflit  avec  le  développement
       des  paramètres,  la  chaîne  ${  n'est pas considérée comme éligible au développement des
       accolades, et empêche le développement d'accolades jusqu'au } fermant.

       Cette construction est typiquement utilisée comme raccourci lorsque le préfixe commun  aux
       chaînes à engendrer est plus long que dans les exemples précédents :

              mkdir /usr/local/src/bash/{old,new,dist,bugs}
       ou
              chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

       Le  développement  des  accolades  induit  une  légère  incompatibilité  avec les versions
       historiques de sh. sh n'effectue aucun traitement sur les accolades ouvrantes et fermantes
       lorsqu'elles  apparaissent  dans  un  mot  et  les  laisse  inchangées.  Bash supprime les
       accolades dans les mots, après développement. Par exemple, si le mot file{1,2} est  fourni
       à sh, il reste inchangé en sortie. En revanche, il est transformé en file1 file2 par bash.
       Si une compatibilité stricte avec sh est nécessaire,  lancez  bash  avec  l'option  +B  ou
       désactivez  le  développement des accolades avec l'option +B de la commande set (consultez
       COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).

   Développement du tilde
       Si un mot commence par un  caractère  tilde  (« ~ »)  non  protégé,  tous  les  caractères
       précédant la première barre oblique non protégée (voire tous les caractères s'il n'y a pas
       de barre oblique non protégée), sont considérés comme un préfixe tilde. Si aucun caractère
       du  préfixe  tilde  n'est  protégé,  les caractères suivant le tilde sont traités comme un
       identifiant de connexion possible. Si cet identifiant de connexion est la chaîne NULL,  le
       tilde  est  remplacé par la valeur du paramètre d'interpréteur HOME. Si HOME n'existe pas,
       le répertoire d'accueil de l'utilisateur exécutant l'interpréteur est utilisé à la  place.
       Sinon le préfixe tilde est remplacé par le répertoire d'accueil associé à l'identifiant de
       connexion indiqué.

       Si le préfixe tilde est « ~+ »,  la  valeur  de  la  variable  de  l'interpréteur  PWD  le
       remplace.  Si  le  préfixe  tilde  est  « ~- », la valeur de la variable de l'interpréteur
       OLDPWD, si existante, lui est substituée. Si les caractères à la suite du  tilde  dans  le
       préfixe tilde représentent un nombre N préfixé facultativement par un « + » ou un « - » le
       préfixe tilde est remplacé par l'élément correspondant de la  pile  de  répertoires  telle
       qu'il  serait  affiché  par  la  commande  interne  dirs  appelée avec le préfixe tilde en
       argument. Si les caractères à la suite du tilde dans  le  préfixe  tilde  représentent  un
       nombre sans un « + » ou « - » en tête, on suppose qu'il s'agit de « + ».

       Si l'identifiant de connexion est incorrect ou si le développement du tilde échoue, le mot
       est inchangé.

       Chaque affectation de variable vérifie immédiatement la présence  de  préfixes  tilde  non
       protégés suivant un : ou le premier =. Dans ces cas, le développement des tildes est aussi
       effectué. On peut donc utiliser des noms de fichiers avec des tildes dans des affectations
       de PATH, MAILPATH et CDPATH et l'interpréteur affectera la valeur développée.

       Bash  effectue  aussi le développement des tildes sur les mots satisfaisant les conditions
       d'affectations de  variable  (comme  décrit  précédemment  dans  PARAMÈTRES)  quand  elles
       apparaissent  comme arguments de commandes simples. Bash ne le fait pas en mode POSIX sauf
       pour les commandes de déclaration listées ci-dessus.

   Développement des paramètres
       Le caractère « $ » permet d'introduire le développement des paramètres, la substitution de
       commande  ou le développement arithmétique. Le nom du paramètre ou du symbole à développer
       peut être encadré par des accolades facultatives mais permettant d'éviter le développement
       de  la  variable  à  partir  de caractères la suivant immédiatement et qui pourraient être
       considérés comme appartenant à son nom.

       Lorsque les accolades sont utilisées, l'accolade de  fin  correspondante  est  le  premier
       caractère  « } » ni protégé par une contre-oblique, ni inclus dans une chaîne protégée, un
       développement  arithmétique,  une  substitution  de  commande  ou  un  développement   des
       paramètres.

       ${paramètre}
              est  remplacé  par  la valeur du paramètre. Les accolades sont nécessaires quand le
              paramètre est un paramètre positionnel ayant plusieurs chiffres, ou si le paramètre
              est  suivi de caractères n'appartenant pas à son nom. Le paramètre est un paramètre
              d’interpréteur (comme décrit précédemment dans  PARAMÈTRES)  ou  une  référence  de
              tableau (Tableaux).

       Si  le  premier  caractère du paramètre est un point d'exclamation (!), et si le paramètre
       n'est pas un nameref, il introduit un niveau d'indirection de variable.  Bash  utilise  la
       valeur  formée  par  le développement du reste du paramètre en tant que nouveau paramètre.
       Cette variable est alors développée et la valeur utilisée pour le reste  du  développement
       plutôt   que   le  développement  du  paramètre  original.  On  appelle  ce  mécanisme  le
       développement indirect. La valeur est sujette au développement de tildes et de paramètres,
       à  la  substitution  de  commande ou au développement arithmétique. Si le paramètre est un
       nameref, le développement porte sur le nom du paramètre référencé par le paramètre  plutôt
       que  sur le développement indirecte complet. Les exceptions à cela sont les développements
       de  ${!préfixe*}  et  de  ${!nom[@]}  décrits  ci-dessous.  Le  point  d'exclamation  doit
       immédiatement suivre l'accolade ouvrante afin d'introduire l'indirection.

       Dans  chacun  des  cas  ci-dessous,  le  mot  est  soumis  au  développement  de tilde, au
       développement  des  paramètres,  à  la  substitution  de  commande  et  au   développement
       arithmétique.

       Quand  il  n'effectue  pas  de  développement  de  sous-chaîne,  en  utilisant  les formes
       documentées ci-dessous (par exemple :-), bash teste si  le  paramètre  est  inexistant  ou
       NULL. L'absence de deux-points induit un test sur la seule inexistence du paramètre.

       ${paramètre:-mot}
              Utilisation  de  valeur  par  défaut.  Si  le  paramètre est inexistant ou NULL, le
              développement du mot est substitué. Sinon, c'est la valeur  du  paramètre  qui  est
              substituée.
       ${paramètre:=mot}
              Affectation  de  valeur  par  défaut.  Si  le  paramètre est inexistant ou NULL, le
              développement du mot lui est affecté. La valeur du paramètre est  alors  substitué.
              Les  paramètres  positionnels  et  spéciaux  ne  peuvent pas être affectés de cette
              façon.
       ${paramètre:?mot}
              Affichage d'erreur si NULL ou inexistant. Si le paramètre est inexistant  ou  NULL,
              le  développement  du  mot  (ou un message approprié si aucun mot n'est fourni) est
              affiché sur la sortie d'erreur standard et l'interpréteur termine, s'il  n'est  pas
              interactif. Sinon, la valeur du paramètre est substituée.
       ${paramètre:+mot}
              Utilisation  de  valeur  alternative.  Si le paramètre est NULL ou inexistant, rien
              n'est substitué. Sinon le développement du mot est substitué.
       ${paramètre:début}
       ${paramètre:début:longueur}
              Développement des  sous-chaînes.  Se  développe  pour  fournir  la  sous-chaîne  de
              longueur  indiquée  (en caractère) commençant au début. Si le paramètre est @ ou *,
              un tableau indicé par @ ou *, ou un nom de tableau associatif, le résultat  diffère
              comme  décrit  ci-dessous.  Si  la  longueur  est  omise,  fournit  la  sous-chaîne
              commençant au caractère indiqué par début  et  s'étendant  jusqu'à  la  fin  de  la
              valeur.  La  longueur  et  le  début  sont des expressions arithmétiques (consultez
              ÉVALUATION ARITHMÉTIQUE ci-dessous).

              Si le début est négatif, sa valeur est considérée à partir de la fin du contenu  du
              paramètre.  Si longueur est négatif, sa valeur est considérée comme une position en
              caractère à partir de la fin de la valeur du paramètre plutôt que comme  un  nombre
              de  caractères,  et le développement est constitué des caractères entre le début et
              cette position. Remarquez que les positions négatives  doivent  être  séparées  des
              deux-points  par  au  moins  une  espace  pour  éviter  d’être  confondues  avec le
              développement de :-.

              Si  le  paramètre  est  @  ou  *,  le  résultat  correspond  à   longueurparamètres
              positionnels  commençant  au  début.  Une  valeur  négative de début est considérée
              relative au plus grand paramètre positionnel plus  un  (ainsi  un  indice  -1  fait
              référence  au  dernier paramètre positionnel). C’est une erreur de développement si
              longueur est évaluée en nombre négatif.

              Si le paramètre est un nom de tableau indicé par  @  ou  *,  le  résultat  est  les
              longueur  éléments du tableau commençant à ${paramètre[début]}. Une valeur négative
              de début est prise relativement  à  la  valeur  maximale  de  l'indice  du  tableau
              considéré  plus  un.  C’est  une erreur de développement si longueur est évaluée en
              nombre négatif.

              Le développement de sous-chaîne  appliqué  à  un  tableau  associatif  produit  des
              résultats non définis.

              L'indexation   des   sous-chaînes   commence  à  zéro,  sauf  pour  les  paramètres
              positionnels pour lesquels l'indexation commence à 1 par défaut. Si début est 0, et
              que les paramètres positionnels sont utilisés, la liste est préfixée par $0.

       ${!préfixe*}
       ${!préfixe@}
              Noms  correspondant  au  préfixe.  Se développe en noms des variables dont les noms
              commencent par préfixe, séparés par le premier caractère de  la  variable  spéciale
              IFS.  Si  @  est utilisé et que le développement apparaît entre guillemets doubles,
              chaque nom de variable se développe séparément.

       ${!nom[@]}
       ${!nom[*]}
              Liste des clefs du tableau. Si nom est  une  variable  de  type  tableau,  elle  se
              développe  en  liste des indices (clefs) du tableau affecté à nom. Si nom n'est pas
              un tableau, se développe en 0 si nom existe et en NULL sinon. Quand @  est  utilisé
              et que le développement apparaît entre guillemets doubles, chaque clef se développe
              en un mot séparé.

       ${#paramètre}
              Longueur du paramètre. Est remplacé par la longueur, en caractères, de la valeur du
              paramètre.  Si  le  paramètre  est  *  ou  @, la valeur est le nombre de paramètres
              positionnels. Si le paramètre est un nom de tableau indicé par * ou  @,  la  valeur
              donnée  est  le nombre d'éléments du tableau. Si le paramètre est un nom de tableau
              indicé par un nombre négatif, ce nombre  est  considéré  comme  ajouté  à  l'indice
              maximal  de  paramètre  plus un (ainsi un indice négatif compte à rebours depuis la
              fin du tableau et un indice -1 fait référence au dernier élément).

       ${paramètre#mot}
       ${paramètre##mot}
              Retrait du motif correspondant au préfixe. Le mot est  développé  pour  fournir  un
              motif,  comme  dans  le  développement des chemins et mis en correspondance avec la
              valeur développée du paramètre avec les  règles  décrites  dans  Motifs  génériques
              ci-dessous.  Si  le  motif  correspond au début de la valeur du paramètre, alors le
              développement prend la valeur développée du paramètre  après  suppression  du  plus
              court (cas « # ») ou du plus long (cas « ## ») motif correspondant. Si le paramètre
              est @ ou *, l'opération de suppression de motif est appliquée  à  chaque  paramètre
              positionnel  tour  à  tour  et  le  développement  est  la  liste résultante. Si le
              paramètre est une variable tableau indicée par @ ou *, l'opération  de  suppression
              de  motif est appliquée à chaque élément du tableau tour à tour et le développement
              est la liste résultante.

       ${paramètre%mot}
       ${paramètre%%mot}
              Retrait du motif correspondant au suffixe. Le mot est  développé  pour  fournir  un
              motif,  comme  dans  le  développement des chemins et mis en correspondance avec la
              valeur développée du paramètre avec les  règles  décrites  dans  Motifs  génériques
              ci-dessous.  Si le motif correspond à une portion finale de la valeur développée du
              paramètre, alors le développement prend la valeur  développée  du  paramètre  après
              suppression  du  plus  court  (cas  « % »)  ou  du  plus  long  (cas  « %% ») motif
              correspondant. Si le paramètre est @ ou *, l'opération de suppression de motif  est
              appliquée  à  chaque  paramètre  positionnel tour à tour et le développement est la
              liste résultante. Si le paramètre est une variable tableau  indicée  par  @  ou  *,
              l'opération  de suppression de motif est appliquée à chaque élément du tableau tour
              à tour et le développement est la liste résultante.

       ${paramètre/motif/chaîne}
       ${paramètre//motif/chaîne}
       ${paramètre/#motif/chaîne}
       ${paramètre/%motif/chaîne}
              Substitution de motif. Le motif est développé  produire  un  motif  comme  dans  le
              développement  des  chemins.  Le  paramètre est développé et la plus longue portion
              correspondant au motif est remplacée par  la  chaîne.  La  chaîne  est  sujette  au
              développement   du  tilde,  des  paramètres  et  des  variables,  au  développement
              arithmétique, à la substitution de commande et de processus, et  à  la  suppression
              des  protections.  La  mise  en correspondance est réalisée en utilisant les règles
              décrites dans Motifs génériques ci-dessous. Dans la première forme ci-dessus, seule
              la première correspondance est remplacée. S'il y a deux barres obliques séparant le
              paramètre et le motif, (la seconde forme ci-dessus) toutes les  correspondances  au
              motif  sont  remplacées  par la chaîne. Si le motif est précédé par # (la troisième
              forme ci-dessus), il  doit  correspondre  au  début  de  la  valeur  développée  du
              paramètre.  Si  le  motif est précédé par % (la quatrième forme ci-dessus), il doit
              correspondre à la fin de la valeur du développement du paramètre. Si la chaîne  est
              NULL,  les portions correspondant au motif sont supprimées et le / suivant le motif
              peut être omis.

              Si l'option d'interpréteur  patsub_replacement  est  activée  en  utilisant  shopt,
              toutes  les  instances  non  protégées  de  & dans la chaîne sont remplacées par la
              partie correspondante du motif.

              La protection  d'une  partie  de  la  chaîne  empêche  les  remplacements  dans  le
              développement de la partie protégée, y compris le remplacement des chaînes stockées
              dans les variables  de  l'interpréteur.  La  contre-oblique  protégera  &  dans  la
              chaîne ;  la  contre-oblique  est supprimée afin de permettre un & littéral dans la
              chaîne de remplacement. La contre-oblique peut aussi être  utilisée  pour  protéger
              une   contre-oblique ;   \\   résulte  en  une  contre-oblique  littérale  dans  le
              remplacement. Les utilisateurs doivent faire attention si la  chaîne  est  protégée
              entre  des  guillemets doubles pour éviter des interactions non souhaitées entre la
              contre-oblique et les guillemets doubles, dans la mesure où la contre-oblique a une
              signification  particulière  avec  des guillemets doubles. La substitution de motif
              réalise la vérification de la présence de & non protégée après le développement  de
              chaîne ;  les développeurs de programmes d’interpréteur doivent protéger toutes les
              occurrences de & qu'ils souhaitent être traitées littéralement dans le remplacement
              et  s'assurer  que  toutes  les instances de & qu'ils souhaitent voir remplacées ne
              soient pas protégées.

              Si l'option d'interpréteur nocasematch est activée, la mise en  correspondance  est
              réalisée  sans  tenir  compte  de  la  casse  des  caractères  alphabétiques. Si le
              paramètre est @ ou *, la substitution est appliquée à chaque paramètre  positionnel
              tour  à  tour  et le développement est la liste résultante. Si le paramètre est une
              variable tableau indicée par @ ou *, l'opération de substitution  est  appliquée  à
              chaque élément du tableau tour à tour et le développement est la liste résultante.

       ${paramètre^motif}
       ${paramètre^^motif}
       ${paramètre,motif}
       ${paramètre,,motif}
              Modification  de  la  casse.  Ce  développement  modifie  la  casse  des caractères
              alphabétiques du paramètre. Le motif est développé pour  fournir  un  motif,  comme
              dans  le  développement  des  chemins.  Chaque caractère de la valeur développée du
              paramètre est testé par rapport au motif et, en cas de correspondance, sa casse est
              convertie.  Le  motif ne devrait pas essayer de correspondre à plus d’un caractère.
              L'opérateur  ^  convertit  les  lettre  minuscules  correspondant  à  ce  motif  en
              majuscules ; l'opérateur , convertit les lettre majuscules correspondant à ce motif
              en minuscules. Les développements  ^^  et  ,,  convertissent  tous  les  caractères
              correspondant  à  leur  valeur développée ; les développements ^ et , convertissent
              seulement le premier caractère de la valeur développée correspondant. Si motif  est
              omis, il est traité comme un ?, ce qui correspond à n'importe quel caractère. Si le
              paramètre est @ ou *, la  modification  de  casse  s'applique  à  chaque  paramètre
              positionnel  tour  à  tour  et  le  développement  est  la  liste résultante. Si le
              paramètre est une variable tableau indicée par @ ou *,  la  modification  de  casse
              s'applique à chaque élément du tableau tour à tour et le développement est la liste
              résultante.

       ${paramètre@opérateur}
              Transformation de paramètre. Le développement est soit  une  transformation  de  la
              valeur  du paramètre ou des informations sur paramètre lui-même, selon la valeur de
              opérateur. Chaque opérateur est une lettre unique :

              U      Le développement est une chaîne qui est la valeur  de  l'argument  avec  des
                     caractères alphabétiques en minuscule convertis en majuscule.
              u      Le  développement  est  une  chaîne qui est la valeur de l'argument avec son
                     premier caractère converti en majuscule, si c'est un caractère alphabétique.
              L      Le développement est une chaîne qui est la valeur  de  l'argument  avec  les
                     caractères alphabétiques en majuscule convertis en minuscule.
              Q      Le  développement  est  une  chaîne qui est la valeur de l'argument protégée
                     dans un format réutilisable en entrée de l'interpréteur.
              E      Le développement est une chaîne qui est la  valeur  du  paramètre  avec  des
                     suites  de caractères de protection par contre-oblique développée comme avec
                     le mécanisme de protection $'...'.
              P      Le développement est une chaîne qui est  le  résultat  du  développement  de
                     lavaleur du paramètre comme s'il s'agissait d'une chaîne d'invite (consultez
                     INVITES ci-dessous).
              A      Le développement est une chaîne sous la forme  d'une  affectation  ou  d'une
                     commande  declare  qui,  lorsqu'elle est évaluée, recréera paramètre avec sa
                     valeur et ses attributs.
              K      Produit une version potentiellement protégée de  la  valeur  de  l'argument,
                     sauf qu'il affiche les valeurs des tableaux indicés et associatifs comme une
                     séquence de paires clé/valeur protégées (consultez Tableaux ci-dessus).
              a      Le  développement  est  une  chaîne  consistant  en   valeurs   d'indicateur
                     représentant les attributs de paramètre.
              k      Comme  la  transformation K,  mais  développe  les  clés  et les valeurs des
                     tableaux indicés et associatifs pour séparer les mots après le découpage  en
                     mots.

              Si  le  paramètre  est  @  ou  *,  l'opération  est  appliquée  à  chaque paramètre
              positionnel tour à tour  et  le  développement  est  la  liste  résultante.  Si  le
              paramètre  est une variable tableau indicée par @ ou *, l'opération est appliquée à
              chaque élément du tableau tour à tour et le développement est la liste résultante.

              Le résultat du développement est sujet au découpage en mots et au développement des
              chemins comme décrit ci-dessous.

   Substitution de commande
       La substitution de commande permet de remplacer le nom d'une commande par son résultat. Il
       en existe deux formes :

              $(commande)
       ou
              `commande`

       Bash effectue  le  développement  en  exécutant  la  commande  dans  un  environnement  de
       sous-interpréteur et en remplaçant la substitution de commande par sa sortie standard dont
       les éventuels sauts de lignes finaux sont supprimés. Les changements de ligne internes  ne
       sont  pas supprimés mais peuvent disparaître lors du découpage en mots. La substitution de
       commande $(cat fichier) peut être remplacée par l'équivalent plus rapide $(< fichier).

       Quand l'ancienne forme de substitution avec les accents  graves  « ` »  est  utilisée,  le
       caractère contre-oblique garde sa signification propre sauf lorsqu'il est suivi de $, ` ou
       \. Le premier accent grave non protégé par une contre-oblique termine la  substitution  de
       commande.  Quand  on  utilise  la forme $(commande), tous les caractères entre parenthèses
       constituent la commande ; aucun n'est traité spécifiquement.

       Les substitutions de commande peuvent être imbriquées.  Pour  imbriquer  en  utilisant  la
       forme   à  accents  graves,  il  faut  protéger  les  accents  graves  internes  avec  des
       contre-obliques.

       Si la substitution  apparaît  entre  guillemets  doubles,  le  découpage  en  mots  et  le
       développement des chemins ne sont pas effectués sur ses résultats.

   Développement arithmétique
       Le  développement  arithmétique  permet  de  remplacer  une expression arithmétique par le
       résultat de son évaluation. Le format du développement arithmétique est :

              $((expression))

       L'ancien format $[expression] est obsolète et sera supprimé dans les  prochaines  versions
       de bash.

       L'expression est traitée comme si elle était entre guillemets doubles, mais des caractères
       guillemet double dans l'expression ne sont pas traités spécifiquement et  sont  supprimés.
       Tous  les  lexèmes  dans  l'expression  sont sujets au développement des paramètres et des
       variables, à la substitution de commande et à la suppression des protections. Le  résultat
       est  traité  comme  l’expression  arithmétique à évaluer. Les développements arithmétiques
       peuvent être imbriqués.

       L'évaluation est effectuée en suivant  les  règles  décrites  ci-dessous  dans  ÉVALUATION
       ARITHMÉTIQUE. Si l'expression est incorrecte, bash affiche un message indiquant l'échec et
       aucune substitution n'a lieu.

   Substitution de processus
       La substitution de processus permet à une entrée  ou  une  sortie  d'un  processus  d’être
       référencée  en  utilisant  un nom de fichier. Elle prend la forme <(liste) ou >(liste). La
       liste de processus est exécutée de façon asynchrone est  son  entrée  ou  sortie  apparaît
       comme un nom de fichier. Le nom de ce fichier est passé en argument à la commande actuelle
       comme résultat de ce développement. Si on utilise la forme >(liste), le fichier  passé  en
       argument  devra  être  lu pour obtenir la sortie de la liste. La substitution de processus
       est prise en charge sur les systèmes acceptant le mécanisme des tubes nommés (FIFO) ou  la
       méthode /dev/fd de nommage de fichiers ouverts.

       Sur   les  systèmes  qui  le  permettent,  la  substitution  de  processus  est  effectuée
       simultanément au développement des paramètres et variables, à la substitution de  commande
       et au développement arithmétique.

   Découpage en mots
       Les  résultats  du  développement  des  paramètres,  de  la substitution de commande et du
       développement arithmétique qui ne se trouvent pas entre guillemets doubles  sont  analysés
       par l'interpréteur afin d'appliquer le découpage en mots.

       L'interpréteur  considère chaque caractère du paramètre IFS comme un délimiteur et découpe
       le résultat des autres développements en mots utilisant ces caractères comme  terminaisons
       de    champ.    Si    IFS    est    inexistante   ou   si   sa   valeur   est   exactement
       <espace><tab><changement_de_ligne>, la valeur par défaut, alors les suites  de  caractères
       <espace>,   <tab>  et  <changement_de_ligne>  au  début  ou  à  la  fin  du  résultat  des
       développements précédents sont ignorés, et toute suite de caractères de IFS ni au début ni
       à  la fin sert à délimiter les mots. Si IFS a une valeur autre que celle par défaut, alors
       les suites de caractères blancs espace et tabulation et changement_de_ligne sont  ignorées
       en  début  et fin de mot, à condition que ces caractères blancs se trouvent dans la valeur
       de IFS (un caractère blanc de IFS). Tout caractère de  IFS  qui  n'est  pas  un  caractère
       blanc,  se  trouvant  à  côté d'un caractère blanc de IFS, délimite un champ. Une suite de
       caractères blancs de IFS est également traitée comme un délimiteur. Si la  valeur  de  IFS
       est NULL, aucun découpage en mots n'a lieu.

       Les  arguments  NULL  explicites ("" ou '') sont conservés et passés à des commandes comme
       chaînes vides. Les arguments NULL implicites non protégés, résultant du développement  des
       paramètres  qui  n'ont  pas  de  valeurs,  sont supprimés. Si un paramètre sans valeur est
       développé entre guillemets doubles, le résultat est un argument NULL qui est  conservé  et
       passé  à une commande comme une chaîne vide. Quand un argument NULL protégé apparaît comme
       appartenant à un mot dont l'expansion  n'est  pas  NULL,  l'argument  NULL  est  supprimé.
       C'est-à-dire  que  le  mot  -d''  devient  -d  après le découpage en mots et le retrait de
       l'argument NULL.

       Remarquez que si aucun développement n'a lieu, le découpage en mots n'est pas effectué.

   Développement des chemins
       Après le découpage en mots, à moins que l'option -f soit  présente,  bash  recherche  dans
       chaque  mot  les caractères *, ? et [. Si l'un d'eux apparaît et n'est pas protégé, le mot
       est considéré comme un motif et remplacé par une liste, classée par ordre alphabétique, de
       noms  de  fichiers  correspondant  à ce motif (consultez Motifs génériques ci-dessous). Si
       aucun nom de fichier ne correspond  et  si  l'option  d'interpréteur  nullglob  n'est  pas
       activée,  le  mot  reste inchangé. Si l'option nullglob existe et si aucune correspondance
       n'est trouvée, le mot est supprimé. Si  l'option  d'interpréteur  failglob  existe  et  si
       aucune  correspondance n'est trouvée, un message d'erreur est affiché et la commande n'est
       pas exécutée. Si l'option d'interpréteur nocaseglob est  activée,  la  correspondance  est
       effectuée  sans  tenir  compte  de  la  casse  des caractères alphabétiques. Remarquez que
       lorsque des expressions d’intervalle comme [a-z] (voir  ci-dessous)  sont  utilisées,  les
       lettres  de l'autre casse peuvent être incluses, selon le paramétrage de LC_COLLATE. Quand
       un motif est utilisé pour le développement des chemins, le caractère « . » au  début  d'un
       nom  ou  immédiatement  à  la  suite  d'une  barre  oblique doit être explicitement mis en
       correspondance, à moins que l'option d'interpréteur dotglob n'existe.  Pour  être  mis  en
       correspondance  avec les noms de fichier « . » et « .. », le motif doit débuter par un « .
       (par exemple, « .? »),  même  si  l'option  dotglob  existe.  Si  l'option  d'interpréteur
       globskipdots  est  activée,  les  noms  de  fichier  « . » et « .. » ne sont jamais mis en
       correspondance, même  si  le  motif  débute  par  un  « ..  Quand  il  ne  s'agit  pas  de
       correspondance  avec des chemins, le caractère « . » n'est pas traité spécifiquement. Lors
       de la correspondance avec un chemin, le caractère barre oblique doit toujours être mis  en
       correspondance  explicitement  par  une  barre oblique dans le motif, mais dans les autres
       contextes de correspondance, il peut être mis en correspondance par un caractère de  motif
       spécial  comme  décrit  ci-dessous  dans  Motifs  génériques.  Voyez  la description de la
       commande shopt dans COMMANDES INTERNES DE L'INTERPRÉTEUR pour une description des  options
       d'interpréteur nocaseglob, nullglob, globskipdots, failglob et dotglob.

       La  variable de l'interpréteur GLOBIGNORE peut servir à restreindre l'ensemble des noms de
       fichiers correspondant à un motif.  Si  GLOBIGNORE  existe,  chaque  nom  de  fichier  qui
       correspond aussi à un motif de GLOBIGNORE est supprimé de la liste des correspondances. Si
       l'option nocaseglob existe, la mise en correspondance avec les motifs dans GLOBIGNORE  est
       réalisée sans tenir compte de la casse. Les noms de fichiers « . » et « .. » sont toujours
       ignorés quand GLOBIGNORE existe et n'est pas NULL. Toutefois, configurer  GLOBIGNORE  avec
       une valeur non NULL a pour effet d'activer l'option d'interpréteur dotglob, ainsi tous les
       autres noms de  fichiers  commençant  par  « . »  correspondront.  Pour  obtenir  l'ancien
       comportement ignorant les noms commençant par « . », placez « .* » dans l'un des motifs de
       GLOBIGNORE. L'option dotglob est désactivée si la variable GLOBIGNORE est inexistante.  La
       correspondances de motifs respecte la configuration de l'option d'interpréteur extglob.

       Motifs génériques

       Tout  caractère  apparaissant  dans  un  motif,  hormis  les  caractères  spéciaux décrits
       ci-dessous, correspond à lui-même. Le caractère NUL ne peut pas se trouver dans un  motif.
       Une  contre-oblique protège le caractère qui la suit ; la contre-oblique de protection est
       supprimée lors de la recherche  de  correspondance.  Les  caractères  spéciaux  de  motifs
       doivent être protégés s'ils sont destinés à une correspondance littérale.

       Les caractères spéciaux ont les significations suivantes :

              *      Correspond  à n'importe quelle chaîne, y compris la chaîne NULL. Si l'option
                     globstar de l'interpréteur est  activée,  et  que  *  est  utilisé  dans  un
                     contexte  de  développement des chemins, deux * adjacents sont utilisés pour
                     un seul motif  correspondant  à  tous  les  fichiers  et  zéro  ou  plus  de
                     répertoires  et  sous-répertoires.  Lorsqu'il  sont  suivis  de  /,  deux  *
                     adjacents correspondront seulement aux répertoires et sous-répertoires.
              ?      Correspond à n'importe quel caractère.
              [...]  Correspond à tout caractère entre les  crochets.  Un  couple  de  caractères
                     séparés  par  un  trait  d'union  indique une expression d’intervalle ; tout
                     caractère qui correspond à n'importe quel caractère  situé  entre  les  deux
                     bornes  incluses,  en  utilisant  les  suites  de  collations  et  le jeu de
                     caractères des paramètres linguistiques régionaux actuels, est  capturé.  Si
                     le  premier  caractère suivant le [ est un ! ou un ^ alors la correspondance
                     se fait sur  tous  les  caractères  hors  intervalle.  L'ordre  de  tri  des
                     caractères  dans  les expressions d’intervalle et les caractères inclus dans
                     l'intervalle sont déterminés  par  les  paramètres  linguistiques  régionaux
                     actuels  et  par  les  valeurs des variables de l'interpréteur LC_COLLATE et
                     LC_ALL si  existantes.  Pour  obtenir  l’interprétation  traditionnelle  des
                     expressions  d’intervalle,  où  [a-d] est équivalent à [abcd], configurez la
                     valeur de  la  variable  d’interpréteur  LC_ALL  à  C  ou  activez  l’option
                     d’interpréteur   globasciiranges.  Un  -  peut  faire  partie  du  motif  de
                     correspondance à condition d’être le premier  ou  le  dernier  caractère  de
                     l'ensemble.  Un  ]  peut faire partie du motif de correspondance à condition
                     d’être le premier caractère de l'ensemble.

                     Entre [ et ], on peut indiquer une  classe  de  caractère  en  utilisant  la
                     syntaxe [:classe:], où classe est l'une des classes suivantes, définies dans
                     la norme POSIX :
                     alnum alpha ascii blank cntrl digit graph lower print punct space upper word
                     xdigit
                     Une  classe  correspond à n'importe quel caractère qui s'y trouve. La classe
                     de caractères word correspond aux lettres,  aux  chiffres  et  au  caractère
                     souligné « _ ».

                     Entre  [  et  ],  on  peut indiquer une classe d'équivalence en utilisant la
                     syntaxe [=c=] qui correspond à n'importe quel caractère ayant le même  poids
                     de  collation  (comme  indiqué  par  les  paramètres linguistiques régionaux
                     actuels) que le caractère c.

                     Entre [ et ], la syntaxe [.symbole.]  correspond  au  symbole  de  collation
                     symbole.

       Si   l'option   extglob   d'interpréteur   est  activée  par  la  commande  interne  shopt
       l'interpréteur  reconnaît  plusieurs  opérateurs  de  correspondance  étendue.   Dans   la
       description  suivante,  une liste-motif est une liste d'un ou plusieurs motifs séparés par
       des |. Les motifs composés sont formés en utilisant  un  ou  plusieurs  sous-motifs  comme
       suit :

              ?(liste-motif)
                     Correspond à zéro ou une occurrence des motifs indiqués.
              *(liste-motif)
                     Correspond à zéro ou plusieurs occurrences des motifs indiqués.
              +(liste-motif)
                     Correspond à une ou plusieurs occurrences des motifs indiqués.
              @(liste-motif)
                     Correspond à une occurrence exactement des motifs indiqués.
              !(liste-motif)
                     Correspond à tout sauf l'un des motifs indiqués.

       L'option  extglob  d'interpréteur modifie le comportement de l'analyseur dans la mesure où
       les parenthèses sont normalement traitées comme  des  opérateurs  avec  une  signification
       syntaxique.  Pour  être  sûr que les motifs développés mis en correspondance sont analysés
       correctement, il faut s'assurer que extglob est activé avant d'analyser les  constructions
       contenant  les  motifs,  y compris les fonctions de l'interpréteur et les substitutions de
       commande.

       Lors de la correspondance avec des noms de fichier,  l'option  de  l'interpréteur  dotglob
       détermine  l'ensemble  de noms de fichiers à tester : quand dotglob est activé, l'ensemble
       de noms de fichier inclut tous les fichiers commençant par « . »,  mais  « . »  et  « .. »
       doivent  être  mis  en  correspondance  avec un motif ou un sous-motif qui commence par un
       point ; quand dotglob  est  désactivé,  l'ensemble  ne  comprend  pas  tous  les  fichiers
       commençant  par  « . »,  à  moins que le motif ou le sous-motif débute par un « . ». Comme
       précédemment, « . » tout seul a une signification particulière lors de  la  correspondance
       avec des noms de fichiers.

       La  mise  en  correspondance de motifs étendus complexes avec de longues chaînes est lente
       surtout quand les motifs contiennent des alternances et les chaînes contiennent  plusieurs
       correspondances.  L'utilisation  de correspondances séparées avec des chaînes plus courtes
       ou en utilisant des tableaux de chaînes à la place d'une longue chaîne  unique  peut  être
       plus court.

   Suppression des protections
       Après  les  développements précédents, toutes les occurrences non protégées des caractères
       \, ' et " qui ne résultent pas d'un des développements ci-dessus sont supprimées.

REDIRECTIONS

       Avant qu'une commande ne soit exécutée, il est possible de  rediriger  son  entrée  ou  sa
       sortie  en  utilisant  une  notation  spéciale  prise  en  compte  par  l'interpréteur. La
       redirection permet aux descripteurs de fichier d’être dupliqués, ouverts, fermés, de faire
       référence à d’autres fichiers et peut modifier les fichiers lus et écrits par la commande.
       Les redirections permettent  également  de  modifier  les  descripteurs  de  fichier  dans
       l'environnement  d’exécution  actuel  de  l'interpréteur.  Les  opérateurs  de redirection
       suivants peuvent précéder ou apparaître n'importe où dans une commande  simple  ou  suivre
       une  commande.  Les  redirections  sont traitées dans leur ordre d'apparition, de gauche à
       droite.

       Toutes les redirections pouvant être précédées par un numéro  de  descripteur  de  fichier
       peuvent  aussi  être précédées par un mot de la forme {nom_de_variable}. Dans ce cas, pour
       chaque opérateur de redirection à part >&- et <&-, l'interpréteur de commande allouera  un
       descripteur  de fichier supérieur ou égal à 10 et l'affectera à nom_de_variable. Si >&- ou
       <&-  sont  précédés  de  {nom_de_variable},  la  valeur  de  nom_de_variable  définit   le
       descripteur de fichier à fermer. Si {nom_de_variable} est fournie, la redirection persiste
       au-delà de la portée de la commande, permettant au programmeur de l'interpréteur de  gérer
       manuellement  la  durée  de  vie  du  descripteur  de  fichier. L'option de l'interpréteur
       varredir_close gère ce comportement.

       Dans les descriptions suivantes, si le numéro de descripteur de fichier est omis et si  le
       premier  caractère  de  l'opérateur  de  redirection  est  <, la redirection se rapporte à
       l'entrée standard (descripteur de fichier 0). Si le premier caractère  de  l'opérateur  de
       redirection est >, la redirection se rapporte à la sortie standard (descripteur de fichier
       1).

       Le mot qui suit l'opérateur de redirection dans les descriptions suivantes, à moins  qu'il
       en  soit  fait  état  autrement,  est soumis au développement des accolades, du tilde, des
       paramètres et des variables, à la substitution de commande, au développement arithmétique,
       à  la  suppression  des protections, au développement des chemins et au découpage en mots.
       S'il se développe en plusieurs mots, bash signale une erreur.

       Remarquez que l'ordre des redirections est important. Par exemple, la commande

              ls > liste_répertoires 2>&1

       redirige à la fois la sortie standard et la  sortie  d'erreur  standard  vers  le  fichier
       liste_répertoires, alors que la commande

              ls 2>&1 > liste_répertoires

       ne  redirige  que  la  sortie  standard  vers  le fichier liste_répertoires, car la sortie
       d'erreur standard a été dupliquée de  la  sortie  standard  avant  que  celle-ci  ne  soit
       redirigée vers liste_répertoires.

       Bash  gèrent  plusieurs  noms  de  fichier spécifiquement quand ils sont utilisés dans des
       redirections. Si le système d'exploitation sur lequel bash s'exécute fournit ces  fichiers
       spéciaux,  bash  les  utilise ; sinon, il les émule en interne avec le comportement décrit
       ci-dessous.

              /dev/fd/df
                     Si df est un entier correct, le descripteur de fichier df est dupliqué.
              /dev/stdin
                     Le descripteur de fichier 0 est dupliqué.
              /dev/stdout
                     Le descripteur de fichier 1 est dupliqué.
              /dev/stderr
                     Le descripteur de fichier 2 est dupliqué.
              /dev/tcp/hôte/port
                     Si hôte est un nom de machine ou une adresse Internet corrects  et  si  port
                     est  un numéro de port entier ou un nom de service, bash tentera d'ouvrir la
                     socket TCP correspondante.
              /dev/udp/hôte/port
                     Si hôte est un nom de machine ou une adresse Internet corrects  et  si  port
                     est  un numéro de port entier ou un nom de service, bash tentera d'ouvrir la
                     socket UDP correspondante.

       Un échec à l'ouverture ou à la création de fichier conduit à l'échec de la redirection.

       Les redirections utilisant des  descripteurs  de  fichier  supérieurs  à  9  doivent  être
       utilisées  avec  précaution,  car  des  conflits peuvent survenir avec les descripteurs de
       fichier utilisés en interne par l'interpréteur.

       Notez que la commande interne exec peut faire appliquer les redirections à  l'interpréteur
       de commande en cours.

   Redirection d'entrée
       Une  redirection  d'entrée conduit à l'ouverture en lecture avec le descripteur de fichier
       numéro n du fichier dont le nom résulte du développement  du  mot  ou  en  tant  qu'entrée
       standard (descripteur de fichier 0) si n n'est pas indiqué.

       Le format général des redirections d'entrée est :

              [n]<mot

   Redirection de sortie
       Une redirection de sortie conduit à l'ouverture en écriture du fichier dont le nom résulte
       du développement du mot avec comme descripteur de fichier n ou en tant que sortie standard
       (descripteur  de  fichier  1)  si  n n'est pas indiqué. Si le fichier n'existe pas, il est
       créé. S'il existait déjà, sa taille est réduite à zéro.

       Le format général des redirections de sortie est le suivant :

              [n]>mot

       Si l'opérateur de redirection est > et si l'option noclobber de la  commande  interne  set
       est activée, la redirection échouera si le fichier dont le nom résulte du développement du
       mot existe et est un fichier normal. Si l'opérateur de redirection est >| ou l'opérateur >
       avec  l'option noclobber de la commande interne set n'est pas activée, la redirection sera
       tentée même si le fichier dont le nom résulte du développement du mot existe.

   Ajout d'une sortie redirigée
       La redirection de la sortie de cette façon conduit à l'ouverture du fichier  dont  le  nom
       résulte  du  développement  du mot pour ajouter au descripteur de fichier n ou à la sortie
       standard (descripteur de fichier 1) si n n'est pas indiqué. Si le fichier n'existe pas, il
       est créé.

       Le format général pour les sorties avec ajout est :

              [n]>>mot

   Redirection de la sortie standard et de la sortie d'erreur standard
       Cette  construction permet la redirection simultanée de la sortie standard (descripteur 1)
       et de la sortie d'erreur standard (descripteur 2), dans un fichier  dont  le  nom  est  le
       résultat du développement du mot.

       Il y a deux formes pour rediriger les sortie standard et sortie d'erreur standard :

              &>mot
       et
              >&mot

       La première des deux formes est préférée. C'est sémantiquement équivalent à

              >mot 2>&1

       En utilisant la deuxième forme, mot ne peut pas être développé en nombre ou -. Si c’est le
       cas,  les  autres  opérateurs  de  redirection  s’appliquent  (consultez  Dédoublement  de
       descripteurs de fichier ci-dessous) pour des raisons de compatibilité.

   Ajout de la sortie standard et de la sortie d'erreur standard
       Cette construction permet l'ajout simultané de la sortie standard (descripteur 1) et de la
       sortie d'erreur standard (descripteur 2), dans un fichier dont le nom est le  résultat  du
       développement du mot.

       La forme pour ajouter les sortie standard et sortie d'erreur standard est :

              &>>mot

       C'est sémantiquement équivalent à

              >>mot 2>&1

       (consultez Dédoublement de descripteurs de fichier ci-dessous).

   Document en ligne
       Ce  type de redirection commande à l'interpréteur de lire son entrée de la source actuelle
       jusqu'à ce qu'il voit une ligne contenant  seulement  le  délimiteur  prévu  (sans  blancs
       finaux).  Toutes  les  lignes  lues  jusqu'à  ce point sont ensuite utilisées comme entrée
       standard (ou comme descripteur de fichier n, si n est spécifié) pour une commande.

       Le format des documents en ligne est le suivant :

              [n]<<[-]mot
                      document_en_ligne
              délimiteur

       Aucun développement des paramètres ou des  variables,  ni  substitution  de  commande,  ni
       développement  arithmétique ou des chemins n’est effectué sur le mot. Si une partie du mot
       est protégée, le délimiteur est le résultat de la suppression des protections sur  mot  et
       les  lignes du document_en_ligne ne sont pas développées. Si mot n'est pas protégé, toutes
       les lignes du document_en_ligne sont  soumises  au  développement  des  paramètres,  à  la
       substitution  de  commande  et  au  développement  arithmétique,  la  suite  de caractères
       \<changement_de_ligne> est ignorée et \ doit être utilisée pour protéger les caractères \,
       $ et `.

       Si  l'opérateur de redirection est <<-, alors les tabulations en tête de chaque ligne sont
       supprimées de l'entrée,  y  compris  dans  la  ligne  contenant  délimiteur.  Cela  permet
       d'indenter de façon naturelle les documents en ligne au sein des scripts.

   Chaînes en ligne
       Une variante aux documents en ligne, le format est :

              [n]<<<mot

       Le  mot  est  sujet  au  développement  du  tilde,  des  paramètres et des variables, à la
       substitution  de  commande,  au  développement  arithmétique  et  à  la  suppression   des
       protections. Ni le développement des chemins, ni le découpage en mots ne sont réalisés. Le
       résultat est fourni comme une seule chaîne, avec l'ajout d'un caractère de  changement  de
       ligne, à la commande sur son entrée standard (ou sur le descripteur de fichier n, si n est
       spécifié).

   Dédoublement de descripteurs de fichier
       L'opérateur de redirection

              [n]<&mot

       permet de dupliquer les descripteurs de fichier en entrée. Si le mot se transforme  en  un
       ou  plusieurs  chiffres,  le  descripteur  de  fichier  noté par n devient une copie de ce
       descripteur. Si les chiffres du mot ne  correspondent  pas  à  un  descripteur  ouvert  en
       lecture,  une erreur de redirection se produit. Si le mot prend la forme -, le descripteur
       n est fermé. Si n n'est pas mentionné, l'entrée standard (descripteur 0) est utilisée.

       L'opérateur

              [n]>&mot

       est utilisé de façon similaire pour dupliquer les descripteurs de sortie. Si n  n'est  pas
       explicité,  la  sortie  standard  (descripteur  1) est utilisée. Si les chiffres du mot ne
       correspondent pas à un descripteur en écriture, une erreur de redirection se  produit.  Si
       mot  est  évalué en -, le descripteur de fichier n est fermé. Dans le cas particulier où n
       est omis et où mot ne se développe pas en un ou plusieurs  chiffres,  ou  -,  les  sorties
       standard et d'erreur standard sont toutes deux redirigées comme décrit précédemment.

   Déplacement de descripteurs de fichier
       L'opérateur de redirection

              [n]<&chiffre-

       déplace le descripteur de fichier chiffre vers le descripteur de fichier n ou sur l'entrée
       standard (descripteur de fichier 0) si n n'est pas indiqué. chiffre est fermé après  avoir
       été dupliqué en n.

       De la même façon, l'opérateur de redirection

              [n]>&chiffre-

       déplace  le  descripteur  de  fichier  chiffre  vers le descripteur de fichier n ou sur la
       sortie standard (descripteur de fichier 1) si n n'est pas indiqué.

   Ouverture en Lecture/Écriture d'un descripteur de fichier
       L'opérateur de redirection

              [n]<>mot

       conduit à l'ouverture du fichier dont le nom résulte du développement du mot, à la fois en
       lecture et en écriture et lui affecte le descripteur de fichier n ou bien le descripteur 0
       si n n'est pas mentionné. Si le fichier n'existe pas, il est créé.

ALIAS

       Les alias permettent de substituer une chaîne à un mot lorsqu'il est utilisé comme premier
       mot d'une commande simple. L'interpréteur gère une liste d'alias qui peuvent être créés et
       détruits avec les commandes internes alias et unalias  (consultez  COMMANDES  INTERNES  DE
       L'INTERPRÉTEUR  ci-dessous).  L'interpréteur  vérifie si le premier mot de chaque commande
       simple, si non protégé, est un alias. Si c'est le cas, ce mot est remplacé par le texte de
       l'alias.  Les caractères /, $, ` et = et tout métacaractère de l'interpréteur ou caractère
       de protection décrits ci-dessus ne peuvent pas apparaître dans un nom d'alias. Le texte de
       remplacement  peut  contenir  toute  entrée  correcte  pour  l'interpréteur, y compris les
       métacaractères de l'interpréteur. L'interpréteur vérifie si le premier  mot  du  texte  de
       remplacement  est  à  son  tour  un  alias,  mais  un mot identique à un alias en cours de
       développement n'est pas développé une seconde fois. Cela signifie qu'on peut, par exemple,
       créer un alias ls valant ls -F et bash n'essaiera pas de développer récursivement le texte
       de substitution. Si le dernier caractère de la valeur de l'alias est un  blanc,  alors  le
       prochain mot de commande suivant l'alias connaîtra aussi le développement d'alias.

       Les  alias  sont  créés  et  affichés avec la commande alias et supprimés avec la commande
       unalias.

       Il n'existe pas de  mécanisme  permettant  d'utiliser  des  arguments  dans  le  texte  de
       remplacement.  S'ils  sont nécessaires, utilisez une fonction de l'interpréteur (consultez
       FONCTIONS ci-dessous).

       Les alias ne sont pas  développés  quand  l'interpréteur  n'est  pas  interactif  sauf  si
       l'option  expand_aliases  de  l'interpréteur est créée par la commande shopt (consultez la
       description de shopt dans COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous).

       Les règles concernant la définition et l'utilisation des alias sont un peu confuses.  Bash
       lit  toujours  au moins une ligne d'entrée complètement et toutes les lignes qui composent
       une commande composée, avant d'exécuter une des commandes de cette ligne ou de la commande
       composée. Les alias sont développés lorsque la commande est lue et non pas lorsqu'elle est
       exécutée. Ainsi, une définition d'alias  apparaissant  sur  la  même  ligne  qu'une  autre
       commande  ne prend pas effet avant la lecture de la prochaine ligne d'entrée. Une commande
       placée à la suite d'une définition d'alias sur la même ligne ne sera pas affectée  par  ce
       nouvel  alias.  Ce comportement est également important lors de l'exécution des fonctions.
       Les alias sont développés lorsque la définition de la fonction est lue et non pas lors  de
       l'exécution  de  cette  fonction,  parce  qu'une  définition de fonction est elle-même une
       commande. Ainsi des alias définis dans une fonction ne sont pas disponibles avant  la  fin
       de  l'exécution de la fonction. Pour plus de tranquillité, placez toujours les définitions
       d'alias sur des lignes isolées et n'utilisez jamais la commande alias dans  les  commandes
       composées.

       Les  alias  sont  surpassés  par  les  fonctions  de  l'interpréteur  dans  la plupart des
       situations.

FONCTIONS

       Une fonction  de  l'interpréteur,  définie  comme  décrit  ci-dessus,  dans  GRAMMAIRE  DE
       L'INTERPRÉTEUR,  conserve une suite de commandes pour exécution ultérieure. Lorsque le nom
       d'une fonction de l'interpréteur est utilisée comme un simple nom de  commande,  la  liste
       des  commandes  associées  à ce nom de fonction est exécutée. Les fonctions sont exécutées
       dans le contexte de l'interpréteur actuel ; aucun nouveau processus n'est  créé  pour  les
       interpréter (à la différence d'un script). Lorsqu'une fonction est exécutée, les arguments
       de la fonction deviennent les paramètres positionnels pendant son exécution. Le  paramètre
       spécial # est mis à jour en conséquence. Le paramètre spécial 0 reste inchangé. Le premier
       élément de la variable FUNCNAME contient le nom de la fonction pendant son exécution.

       Tous les autres aspects de l'environnement d'exécution de l'interpréteur  sont  identiques
       entre la fonction et le contexte d'appel, aux exceptions suivantes : les captures de DEBUG
       et RETURN (consultez la description de la commande interne trap dans COMMANDES INTERNES DE
       L'INTERPRÉTEUR  ci-dessous)  ne  sont  pas  héritées, à moins que l'attribut trace ne soit
       positionné pour la fonction (consultez la  description  de  la  commande  interne  declare
       ci-dessous) ou que l'option d'interpréteur -o functrace n'ait été activée avec la commande
       interne set (auquel cas toutes les fonctions hériteront des captures de DEBUG et  RETURN),
       et  la capture ERR n'est pas héritée à moins que l'option d'interpréteur -o errtrace n'ait
       été activée.

       Les paramètres linguistiques régionaux des  variables  pour  les  fonctions  peuvent  être
       déclarés  avec  la commande interne local (local variables). Normalement, les variables et
       leurs valeurs sont partagées entre la fonction et son contexte d'appel.  Si  une  variable
       est  déclarée local, la portée visible de la variable est restreinte à cette fonction et à
       ses enfants (y compris les fonctions qu'elle appelle).

       Dans  la  description  suivante,  la  portée  actuelle  est  une  fonction  qui  s'exécute
       actuellement.  Les  portées  précédentes  consistent  en  celles du contexte d'appel de la
       fonction et ainsi de suite, en remontant jusqu'à la portée « globale », où  l'interpréteur
       n'exécute  aucune  fonction de l'interpréteur. Par conséquent, une variable locale pour la
       portée actuelle est une variable déclarée avec les commandes  internes  local  ou  declare
       dans la fonction qui est exécutée actuellement.

       Les  variables  locales  « suivent »  les variables du même nom déclarées pour des portées
       précédentes. Par exemple, une variable  locale  déclarée  dans  une  fonction  masque  une
       variable  globale  du  même  nom :  les  références  et  les affectations se réfèrent à la
       variable locale, sans modifier la variable globale. Quand la fonction  rend  la  main,  la
       variable globale est à nouveau visible.

       L'interpréteur  utilise les portées dynamiques pour contrôler la visibilité d'une variable
       dans les fonctions. Avec les portées dynamiques, les variables visibles et  leurs  valeurs
       sont  le  résultat  d'une  suite  d'appels de fonction qui font que l'exécution atteint la
       fonction actuelles. La valeur de la variable vue par une fonction dépend de sa valeur dans
       son  contexte  d'appel, s'il existe, que le contexte d'appel soit la portée « globale » ou
       une autre fonction de l'interpréteur. C'est aussi la valeur qu'une déclaration de variable
       locale « suit », et la valeur qui est restaurée quand la fonction rend la main.

       Par  exemple, si une variable var est déclarée comme locale dans la fonction fonc1, et que
       fonc1 appelle une autre fonction, fonc2, les références à var provenant de la fonc2 seront
       résolues à la valeur de la variable locale var provenant la fonc1, masquant toute variable
       globale nommée var.

       La commande interne unset fonctionne avec les mêmes portées dynamiques : si  une  variable
       est locale pour la portée actuelle, unset la détruit ; autrement, la destruction se réfère
       à la variable trouvée dans une portée d'appel comme décrit ci-dessus. Si une variable pour
       la  portée  locale actuelle est désactivée, elle reste ainsi (apparaissant comme détruite)
       jusqu'à ce qu'elle soit réinitialisée dans cette portée ou  jusqu'à  ce  que  la  fonction
       rende  la  main.  Une  fois que la fonction a rendu la main, toute instance de la variable
       dans la portée antérieure deviendra visible. Si la désactivation  agit  sur  une  variable
       dans  une portée antérieure, toute instance d'une variable de ce nom qui avait été masquée
       deviendra visible (voir  plus  loin  comment  l'option  de  l'interpréteur  localvar_unset
       modifie ce comportement).

       La  variable  FUNCNEST, si configurée à une valeur numérique strictement positive, définit
       le niveau maximal d'imbrication de fonctions. Les invocations de fonctions  qui  dépassent
       la limite forceront toute la commande à abandonner.

       Si  la  commande  interne  return  est  exécutée dans une fonction, celle-ci se termine et
       l'exécution reprend avec la commande suivant l'appel de fonction. Toute commande  associée
       à  la capture de RETURN est exécutée avant que l'exécution reprenne. Quand une fonction se
       termine, les paramètres positionnels et le paramètre  spécial  #  reprennent  les  valeurs
       qu'ils avaient avant l'appel de la fonction.

       Les  noms  et  les  définitions  de  fonctions  peuvent être affichés avec l'option -f des
       commandes internes declare ou typeset. L'option -F de declare ou typeset  n'affichera  que
       les  noms  de  fonction  (et  facultativement  le fichier source et le numéro de ligne, si
       l'option d'interpréteur extdebug est activée). Les fonctions peuvent être  exportées  avec
       l'option  -f  de la commande interne export, afin d'être automatiquement définies dans les
       processus enfant de l'interpréteur (ceux créés lors de l'exécution d'un  lancement  séparé
       de  l'interpréteur). Une définition de fonction peut être supprimée avec l'option -f de la
       commande interne unset.

       Les fonctions peuvent être récursives.  La  variable  FUNCNEST  peut  être  utilisée  pour
       limiter  la  profondeur  de  la  pile  d'appel  de  la  fonction  et restreindre le nombre
       d'invocations de fonctions. Par défaut,  aucune  limite  n'est  imposée  quant  au  nombre
       d'appels récursifs.

ÉVALUATION ARITHMÉTIQUE

       L'interpréteur   permet,   dans   certaines   circonstances,   l'évaluation  d'expressions
       arithmétiques (consultez les commandes internes let et  declare  ainsi  que  Développement
       arithmétique).  L'évaluation est effectuée en utilisant des entiers de longueur fixe, sans
       vérification du débordement. Néanmoins, la division par 0 est capturée  et  marquée  comme
       une  erreur.  Les  opérateurs,  leur  priorité,  leur  associativité  et  leur valeur sont
       identiques à ceux du langage C. La liste suivante d'opérateurs est groupée par  opérateurs
       de  niveaux  de  priorité  identiques.  Les  niveaux  sont  décrits  par ordre de priorité
       décroissante.

       id++ id--
              post-incrément et post-décrément de variables
       - +    moins et plus unaires
       ++id --id
              préincrément et prédécrément de variables
       ! ~    négations logique et binaire
       **     exponentiation
       * / %  multiplication, division, reste
       + -    addition, soustraction
       << >>  décalage arithmétique à gauche et à droite
       <= >= < >
              comparaisons
       == !=  égalité et différence
       &      ET binaire
       ^      OU exclusif binaire
       |      OU binaire
       &&     ET logique
       ||     OU logique
       expr?expr:expr
              opérateur conditionnel
       = *= /= %= += -= <<= >>= &= ^= |=
              affectations
       expr1 , expr2
              virgule

       Les variables de l'interpréteur sont utilisables comme  opérandes,  le  développement  des
       paramètres  étant  effectué  avant  l'évaluation  arithmétique.  Dans  une expression, les
       variables de l'interpréteur peuvent également être référencées par leur nom, sans utiliser
       la   syntaxe  de  développement  des  paramètres.  Une  variable  d'interpréteur  NULL  ou
       inexistante est évaluée à 0 lorsqu'elle est consultée par son nom sans utiliser la syntaxe
       de développement des paramètres. La valeur d'une variable est évaluée comme une expression
       arithmétique lorsqu'elle est consultée, ou lorsqu'une valeur lui est affecté alors que son
       attribut  integer  (entier)  a été positionné en utilisant declare -i. Une valeur NULL est
       évaluée à 0. Une variable d'interpréteur n'a donc pas besoin d'avoir son attribut  integer
       positionné pour être utilisable dans un calcul.

       Les  constantes  de  type  entier  suivent  la  définition  du langage C, sans suffixes ou
       constantes de caractères. Les constantes commençant  par 0  sont  interprétées  comme  des
       nombres  octaux.  Un  en-tête 0x ou 0X indique une valeur hexadécimale. Sinon, les nombres
       ont la forme [base#]n où  la  base  facultative  est  un  nombre  décimal  entre 2  et  64
       représentant  la base arithmétique et n est un nombre exprimé dans cette base. Si la base#
       est omise, la base 10 est utilisée. En indiquant  n,  si  un  caractère  non  chiffre  est
       requis,  les  chiffres  supérieurs  à 9  sont  représentés par les lettres minuscules, les
       lettres majuscules, le « @ » et le « _ », dans cet ordre. Si la  base  est  inférieure  ou
       égale  à 36,  les  minuscules et les majuscules sont interchangeables pour représenter les
       nombres entre 10 et 35.

       Les opérateurs sont évalués par ordre de priorité. Les sous-expressions entre  parenthèses
       sont évaluées en premier, ce qui permet de surpasser les règles de priorité ci-dessus.

CONDITIONS

       Les  conditions  sont utilisées par la commande composée [[ et les commandes internes test
       et [ pour vérifier les attributs d'un fichier et effectuer des comparaisons  arithmétiques
       ou  sur  des  chaînes.  Les  commandes test et [ déterminent comment elles se comportent à
       partir du nombre d'arguments ; consultez la description de ces commandes pour  toutes  les
       autres actions spécifiques aux commandes.

       Les conditions se forment à partir des primitives unaires ou binaires suivantes. Bash gère
       plusieurs noms de fichier spécifiquement quand ils sont utilisés dans des  conditions.  Si
       le  système  d'exploitation  sur lequel bash s'exécute fournit ces fichiers spéciaux, bash
       les utilise ; sinon, il les émule en interne avec  ce  comportement :  si  n'importe  quel
       argument  fichier  de l'une des primitives est de la forme /dev/fd/n, alors le descripteur
       de fichier n est examiné.  Si  l'argument  fichier  de  l'une  des  primitives  est  parmi
       /dev/stdin,   /dev/stdout   ou   /dev/stderr,   le  descripteur  de  fichier 0,  1  ou  2,
       respectivement, est examiné.

       Sauf indication contraire,  les  primitives  relatives  aux  fichiers  suivent  les  liens
       symboliques et opèrent sur la cible du lien plutôt que sur le lien lui-même.

       Lorsqu'ils  sont  utilisés  avec  [[,  les  opérateurs  < et > ordonnent d'un point de vue
       lexicographique en utilisant les paramètres linguistiques régionaux actuels.  La  commande
       test trie en utilisant l'ordre ASCII.

       -a fichier
              Vrai si le fichier existe.
       -b fichier
              Vrai si le fichier existe et est un fichier spécial bloc.
       -c fichier
              Vrai si le fichier existe et est un fichier spécial caractère.
       -d fichier
              Vrai si le fichier existe et est un répertoire.
       -e fichier
              Vrai si le fichier existe.
       -f fichier
              Vrai si le fichier existe et est un fichier normal.
       -g fichier
              Vrai si le fichier existe et a son bit Set-GID positionné.
       -h fichier
              Vrai si le fichier existe et est un lien symbolique.
       -k fichier
              Vrai si le fichier existe et a son bit « sticky » positionné.
       -p fichier
              Vrai si le fichier existe et est un tube nommé (FIFO).
       -r fichier
              Vrai si le fichier existe et est accessible en lecture.
       -s fichier
              Vrai si le fichier existe et a une taille strictement positive.
       -t df  Vrai si le descripteur de fichier df est ouvert et se rapporte à un terminal.
       -u fichier
              Vrai si le fichier existe et a son bit Set-UID positionné.
       -w fichier
              Vrai si le fichier existe et est accessible en écriture.
       -x fichier
              Vrai si le fichier existe et est exécutable.
       -G fichier
              Vrai si le fichier existe et appartient au GID effectif du groupe.
       -L fichier
              Vrai si le fichier existe et est un lien symbolique.
       -N fichier
              Vrai si le fichier existe et a été modifié depuis sa dernière lecture.
       -O fichier
              Vrai si le fichier existe et appartient à l'UID effectif de l'utilisateur.
       -S fichier
              Vrai si le fichier existe et est une socket.
       fichier_1 -ef fichier_2
              Vrai  si le fichier_1 et le fichier_2 se rapportent au même périphérique et ont les
              mêmes numéros d'inœuds.
       fichier_1 -nt fichier_2
              Vrai si le fichier_1 est plus récent que le fichier_2 (selon les dates de  dernière
              modification) ou si fichier_1 existe et non fichier_2.
       fichier_1 -ot fichier_2
              Vrai si le fichier_1 est plus ancien que le fichier_2 ou si fichier_2 existe et non
              fichier_1.
       -o nom_opt
              Vrai si l'option d'interpréteur nom_opt est activée. Consulter la liste des options
              ci-dessous dans la description de l'option -o de la commande interne set.
       -v nom_de_variable
              Vrai si la variable nom_de_variable de l'interpréteur est configurée (si une valeur
              lui a été assignée).
       -R nom_de_variable
              Vrai si la variable nom_de_variable de l'interpréteur est  configurée  et  est  une
              référence de nom.
       -z chaîne
              Vrai si la longueur de la chaîne est nulle.
       chaîne
       -n chaîne
              Vrai si la longueur de la chaîne est non nulle.

       chaîne_1 == chaîne_2
       chaîne_1 = chaîne_2
              Vrai  si  les  deux  chaînes sont égales. Le symbole = devrait être utilisé avec la
              commande test pour être en conformité POSIX. Utilisée avec  la  commande  [[,  cela
              réalise  une  correspondance  de  motif  tel  que  décrit  précédemment  (Commandes
              composées).

       chaîne_1 != chaîne_2
              Vrai si les deux chaînes sont différentes.

       chaîne_1 < chaîne_2
              Vrai si chaîne_1 se trouve avant chaîne_2 dans l'ordre lexicographique.

       chaîne_1 > chaîne_2
              Vrai si chaîne_1 se trouve après chaîne_2 dans l'ordre lexicographique.

       arg1 OP arg2
              OP est l'un des opérateurs suivants -eq, -ne, -lt, -le, -gt ou -ge. Ces  opérateurs
              arithmétiques  binaires  renvoient vrai si arg1 est respectivement égal, différent,
              inférieur, inférieur ou égal, supérieur, supérieur ou égal à  arg2.  arg1  et  arg2
              peuvent  être  des  entiers  positifs ou négatifs. Lorsqu'ils sont utilisés avec la
              commande [[,  arg1  et  arg2  sont  évalués  comme  des  expressions  arithmétiques
              (consultez ÉVALUATION ARITHMÉTIQUE ci-dessus).

DÉVELOPPEMENT DES COMMANDES SIMPLES

       Lors  de  l'exécution  d'une  commande simple, l'interpréteur effectue les développements,
       affectations et redirections, de gauche à droite dans l'ordre suivant.

       1.     Les mots que l'analyseur  a  repéré  comme  affectations  de  variables  (ceux  qui
              précèdent  le  nom  de  la  commande)  et  les redirections sont conservées pour un
              traitement ultérieur.

       2.     Les mots qui ne sont ni des affectations de  variables  ni  des  redirections  sont
              développés.  S'il  reste  des  mots  après  le  développement,  le  premier mot est
              considéré comme le nom d'une commande et les suivants comme ses arguments.

       3.     Les redirections sont effectuées comme décrit ci-dessus dans REDIRECTIONS.

       4.     Le texte suivant le signe  =  de  chaque  affectation  de  variable  est  sujet  au
              développement  du  tilde,  des  paramètres,  à  la  substitution  de  commande,  au
              développement arithmétique et à la suppression des protections avant d'être affecté
              à la variable.

       Si  aucun  nom  de  commande  ne  résulte  des précédentes opérations, les affectations de
       variables modifient l'environnement actuel de l'interpréteur. Dans le cas de commandes  de
       ce  type  (celles  qui  consistent  uniquement  en  affectations  et en redirections), les
       affectations sont effectuées avant les redirections. Sinon les variables sont  ajoutées  à
       l'environnement   de   la   commande   exécutée  et  n'affectent  pas  l'environnement  de
       l'interpréteur actuel. Si l'une des tentatives  d'affectation  concerne  une  variable  en
       lecture  seule,  une  erreur  se  produit et la commande termine avec un état différent de
       zéro.

       Si aucun nom de commande n'est obtenu, les redirections sont effectuées mais ne  modifient
       pas  l'environnement  de  l'interpréteur  actuel.  Une  erreur de redirection conduit à la
       terminaison de la commande avec un état différent de zéro.

       S'il reste un nom de commande après le développement,  l'exécution  a  lieu  comme  décrit
       ci-dessous.   Sinon   la  commande  termine.  Si  l'un  des  développements  contient  une
       substitution de commande, l'état final de la commande est  l'état  final  de  la  dernière
       substitution  de  commande  effectuée.  S'il n'y avait aucune substitution de commande, la
       commande termine avec un état de zéro.

EXÉCUTION DES COMMANDES

       Après le découpage de la ligne de commande en mots, si le résultat est une commande simple
       suivie d'une liste facultative d'arguments, les actions suivantes sont effectuées.

       Si  le  nom  de  la  commande ne contient aucune barre oblique, l'interpréteur tente de la
       localiser. S'il existe une fonction de l'interpréteur de ce nom, elle  est  appelée  comme
       nous  l'avons  vu  ci-dessus  dans  FONCTIONS.  Si  le nom n'est pas celui d'une fonction,
       l'interpréteur le recherche dans la liste des commandes internes.  Si  une  correspondance
       est trouvée, cette commande interne est appelée.

       Si le nom n'est ni celui d'une fonction de l'interpréteur, ni celui d'une commande interne
       et s'il ne contient pas de barre oblique, bash va chercher dans  chacun  des  éléments  de
       PATH  un  répertoire contenant un fichier exécutable du nom désiré. Bash utilise une table
       de hachage pour mémoriser les chemins d'accès complets aux fichiers exécutables (consultez
       la  commande  hash  dans  COMMANDES  INTERNES DE L'INTERPRÉTEUR ci-dessous). Une recherche
       complète dans les répertoires du PATH n'est effectuée que si la commande ne se trouve  pas
       dans  la  table de hachage. Si la recherche est infructueuse, l'interpréteur recherche une
       fonction de l'interpréteur appelée command_not_found_handle.  Si  cette  fonction  existe,
       elle  est  appelée  dans un environnement d'exécution séparé avec la commande d'origine et
       comme argument les arguments de celle-ci, et l'état final de la  fonction  devient  l'état
       final de ce sous-interpréteur. Si cette fonction n'est pas définie, l'interpréteur affiche
       un message d'erreur et renvoie un état final de 127.

       Si la recherche réussit ou si le nom de la  commande  contient  une  ou  plusieurs  barres
       obliques,  l'interpréteur  exécute  le programme demandé dans un environnement d'exécution
       distinct. L'argument 0 est configuré au nom indiqué et les éventuels arguments restants de
       la commande sont configurés aux arguments indiqués.

       Si  cette exécution échoue parce que le programme n'est pas un exécutable et si le fichier
       n'est pas un répertoire, il est pris pour un script, un fichier  contenant  des  commandes
       d'interpréteur,  et l'interpréteur crée une nouvelle instance de lui-même pour exécuter ce
       script. Ce sous-interpréteur se réinitialisera lui-même, comme si un  nouvel  interpréteur
       avait  été  appelé  pour  exécuter le script, à la différence qu'il continuera à mémoriser
       l'emplacement des commandes connues de son parent (consultez hash dans COMMANDES  INTERNES
       DE L'INTERPRÉTEUR ci-dessous).

       Si le programme est un fichier commençant par #!, le reste de la première ligne indique un
       interprète pour ce programme. L'interpréteur se chargera d'exécuter  l'interprète  indiqué
       sur  les  systèmes  d'exploitation qui ne gèrent pas eux-mêmes ce format d'exécutable. Les
       arguments de l'interprète consistent en un seul argument facultatif fourni sur la première
       ligne  du  fichier à la suite du nom de l'interprète, suivi du nom du programme, suivi des
       arguments de la commande s'il y en a.

ENVIRONNEMENT D'EXÉCUTION DES COMMANDES

       L'interpréteur fournit un environnement d'exécution consistant en l'ensemble des  éléments
       suivants :

       •      les  fichiers  ouverts  hérités  par l'interpréteur à son appel et modifiés par les
              redirections fournies à la commande interne exec ;

       •      le répertoire de travail actuel comme configuré par cd, pushd ou popd ou hérité par
              l'interpréteur à son appel ;

       •      le  masque  de création de fichier comme configuré par umask ou hérité du parent de
              l'interpréteur ;

       •      les captures actuelles configurées par trap ;

       •      les paramètres de l'interpréteur configurés par des affectations de variables, avec
              la   commande   interne   set,   ou   hérités   de  l'environnement  du  parent  de
              l'interpréteur ;

       •      les fonctions de  l'interpréteur  définies  lors  de  l'exécution  ou  héritées  de
              l'environnement du parent de l'interpréteur ;

       •      les  options  activées  à  l'appel  (par  défaut  ou avec les arguments de ligne de
              commande) ou par set ;

       •      les options activées par shopt ;

       •      les alias de l'interpréteur définies par la commande alias ;

       •      les ID des divers processus, y compris ceux des tâches en arrière-plan,  la  valeur
              de $$ et la valeur de PPID.

       Lorsqu'une  commande différente d'une commande interne ou d'une fonction de l'interpréteur
       doit être exécutée, elle est appelée dans un environnement d'exécution séparé constitué de
       ce  qui  suit.  Sauf indication contraire, les valeurs sont héritées de l'environnement de
       l'interpréteur :

       •      les fichiers ouverts de l'interpréteur, ainsi que toutes  modifications  et  ajouts
              précisés par les redirections de la commande ;

       •      le répertoire de travail actuel ;

       •      le masque de création de fichiers ;

       •      les variables et les fonctions de l'interpréteur marquées pour l'exportation, ainsi
              que les variables exportées spécialement pour la commande ;

       •      les captures  interceptées  par  l'interpréteur  sont  réinitialisées  aux  valeurs
              héritées  de  l'interpréteur  parent  et  les  captures ignorées par l'interpréteur
              restent ignorées.

       Une commande appelée dans un environnement distinct ne peut pas  affecter  l'environnement
       d'exécution de l'interpréteur.

       Un sous-interpréteur est une copie du processus de l'interpréteur.

       Les  substitutions  de commande, les commandes groupées entre parenthèses et les commandes
       asynchrones sont appelées dans un environnement de sous-interpréteur qui est une copie  de
       celui   de   l'interpréteur,  mais  les  captures  interceptées  par  l'interpréteur  sont
       réinitialisées aux valeurs que l'interpréteur avait héritées de son parent  à  son  appel.
       Les   commandes   internes  appelées  dans  un  pipeline  sont  aussi  exécutées  dans  un
       environnement de sous-interpréteur. Les modifications  apportées  à  l'environnement  d'un
       sous-interpréteur n'affectent aucunement l'environnement d'exécution de l'interpréteur.

       Les  sous-interpréteurs  engendrés pour exécuter les substitutions de commande héritent de
       la valeur de l'option -e de l'interpréteur parent. En dehors du mode  POSIX,  bash  efface
       l'option -e de tels sous-interpréteurs.

       Si  une  commande  est  suivie  par  un  &  et que le contrôle des tâches n'est pas actif,
       l'entrée standard par défaut de la commande est  le  fichier  vide  /dev/null.  Sinon,  la
       commande  appelée  hérite  des  descripteurs  de  fichier de l'interpréteur appelant comme
       modifiés par les redirections.

ENVIRONNEMENT

       Quand un programme  est  appelé,  il  reçoit  un  tableau  de  chaînes  que  l'on  appelle
       environnement. Il s'agit d'une liste de couples nom-valeur, de la forme nom=valeur.

       L'interpréteur   fournit   plusieurs   façons  de  gérer  l'environnement.  Au  démarrage,
       l'interpréteur analyse son propre environnement et  crée  un  paramètre  pour  chaque  nom
       trouvé,  en  le  marquant  comme  exportable  vers  les  processus  enfants. Les commandes
       exécutées héritent de cet environnement. Les commandes export  et  declare  -x  permettent
       d'ajouter ou de supprimer des paramètres ou des fonctions de l'environnement. Si la valeur
       d'un paramètre de l'environnement est modifiée, la nouvelle valeur devient une  partie  de
       l'environnement  et  elle  remplace  l'ancienne. L'environnement hérité par toute commande
       exécutée est l'environnement initial de l'interpréteur,  dont  les  valeurs  peuvent  être
       modifiées  dans l'interpréteur, sans les éléments supprimés par la commande unset, et avec
       les éléments ajoutés par les commandes export et declare -x.

       L'environnement d'une commande simple ou d'une fonction peut être augmenté temporairement,
       en  la  faisant  précéder  des affectations de paramètres, comme nous l'avons vu ci-dessus
       dans PARAMÈTRES. Ces affectations ne concernent que l'environnement vu par cette commande.

       Si l'option -k est configurée (consultez ci-dessous la commande interne set), alors toutes
       les  affectations  de paramètres sont placées dans l'environnement d'une commande exécutée
       et non seulement celles qui précèdent son nom.

       Quand bash appelle une commande externe, la variable _ est configurée  en  chemin  d'accès
       complet à cette commande et elle est transmise dans l'environnement.

CODE DE RETOUR

       L'état final d'une commande exécutée est la valeur renvoyée par l'appel système waitpid ou
       fonction équivalente. Les états finaux prennent leurs valeurs entre 0 et  255,  néanmoins,
       comme  expliqué  ci-dessous, l'interpréteur peut utiliser les valeurs supérieures à 125 de
       façon particulière. Les états finaux des commandes internes et  composées  sont  également
       limités  à cet intervalle. Sous certaines conditions, l'interpréteur utilisera des valeurs
       particulières pour indiquer des modes d'échec particuliers.

       Du point de vue de l'interpréteur, une commande qui termine avec état final valant zéro  a
       réussi.  Un  état final de zéro indique le succès. Un état final différent de zéro indique
       un échec. Quand une commande se termine par un signal mortel N,  bash  utilise  la  valeur
       128+N comme état final.

       Si  une  commande  n'est  pas trouvée, le processus enfant créé pour l'exécuter renvoie un
       état de 127. Si une commande est trouvée mais pas exécutable, la valeur renvoyée est 126.

       Si une commande échoue à cause d'une  erreur  survenue  lors  d'un  développement  ou  des
       redirections, l'état final est strictement plus grand que zéro.

       Les  commandes internes renvoient un état de 0 (vrai) si réussies et une valeur différente
       de zéro (faux) si une erreur se produit  pendant  leur  exécution.  Toutes  les  commandes
       internes  renvoient  un  état  final de 2 pour indiquer un usage incorrect, en général des
       options non valables ou des arguments manquants.

       Le code de retour de la dernière commande est disponible dans le paramètre spécial $?.

       Bash lui-même renvoie l'état final de la dernière commande exécutée, à moins qu'une erreur
       de  syntaxe  ne  se  produise,  auquel  cas il termine avec une valeur différente de zéro.
       Consultez aussi ci-dessous la commande interne exit.

SIGNAUX

       Quand bash fonctionne de façon interactive, en absence de toute capture, il ignore SIGTERM
       (c'est ainsi que kill 0 ne tue pas un interpréteur interactif) et SIGINT est intercepté et
       géré (c'est ainsi que la commande interne wait est interruptible). Dans tous les cas, bash
       ignore  SIGQUIT.  Si  le  contrôle  des  tâches est actif, bash ignore SIGTTIN, SIGTTOU et
       SIGTSTP.

       Les commandes externes lancées par bash ont les gestionnaires de  signaux  configurés  aux
       valeurs  héritées par l'interpréteur de son parent. Quand le contrôle des tâches n'est pas
       actif, les tâches en arrière-plan ignorent les signaux  SIGINT  et  SIGQUIT  en  plus  des
       gestionnaires  hérités. Les commandes exécutées en tant que résultat d'une substitution de
       commande ignorent les signaux de contrôle de tâches émis par le clavier  SIGTTIN,  SIGTTOU
       et SIGTSTP.

       Par  défaut,  l'interpréteur  termine  à  la  réception  de  SIGHUP. Avant de terminer, un
       interpréteur interactif renvoie le SIGHUP à toutes les tâches en cours ou suspendues.  Les
       tâches  suspendues  reçoivent  aussi  SIGCONT  pour  s'assurer  qu'elles reçoivent bien le
       SIGHUP. Pour empêcher l'interpréteur d'envoyer le signal à une  tâche  particulière,  elle
       devrait  être  supprimée de la table des tâches avec la commande interne disown (consultez
       COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous) ou marquée comme exemptée  de  SIGHUP  en
       utilisant disown -h.

       Si  l'option d'interpréteur huponexit a été configurée avec la fonction shopt, bash envoie
       un signal SIGHUP à toutes les tâches lorsqu'un  interpréteur  de  commandes  de  connexion
       interactif termine.

       Lorsque  bash  attend qu'une commande se termine et qu'il reçoit un signal pour lequel une
       capture a été configurée, la capture ne sera pas exécutée tant que la commande  n'est  pas
       terminée.  Lorsque  bash  attend  la fin d'une commande asynchrone par la commande interne
       wait, la réception d'un signal pour lequel une capture a  été  configurée  conduira  à  un
       retour immédiat de la commande interne wait avec un état final supérieur à 128, à la suite
       de quoi la capture est immédiatement exécutée.

       Quand le contrôle des tâches  n'est  pas  activé,  et  que  bash  est  dans  l'attente  de
       l'achèvement d'une commande au premier plan, l'interpréteur reçoit les signaux émis par le
       clavier  comme  SIGINT  (généralement  créé  par  ^C)  que  l'utilisateur  a  généralement
       l'intention  d'envoyer  à  cette  commande. Cela se produit parce que l'interpréteur et la
       commande sont dans le même groupe de processus que le terminal, et ^C envoie un  SIGINT  à
       tous les processus de ce groupe de processus.

       Quand  bash  est  exécuté sans que le contrôle de tâche ne soit activé et reçoit un SIGINT
       pendant qu'il attend une commande au premier plan, il attend jusqu'à ce que la commande au
       premier plan s'achève et décide ensuite que faire du SIGINT :

       1.     Si  la  commande  termine  du  fait  du  SIGINT,  bash  conclut que l'utilisateur a
              l'intention de mettre fin à tout le script et répond  au  SIGINT  (par  exemple  en
              exécutant une capture de SIGINT ou en s'arrêtant lui-même) ;

       2.     Si  la  commande ne se termine pas du fait du SIGINT, le programme a géré le SIGINT
              lui même et ne l'a pas traité comme un signal fatal. Dans ce cas bash ne traite pas
              le  SIGINT  comme  un  signal  fatal,  en supposant plutôt soit que le SIGINT était
              utilisé comme un élément du déroulement normal du  programme  (par  exemple,  emacs
              l'utilise   pour   interrompre   des   commandes   d'édition)  ou  était  abandonné
              délibérément. Néanmoins, bash exécutera toute capture définie par SIGINT, comme  il
              le fait pour tout autre signal capturé reçu pendant qu'il attend que la commande au
              premier plan s'achève, pour des raisons de compatibilité

CONTRÔLE DES TÂCHES

       Le contrôle des tâches se réfère  à  la  capacité  de  suspendre  (suspend)  sélectivement
       l'exécution  d'un  processus  et  de  la  reprendre (resume) ultérieurement. L'utilisateur
       bénéficie généralement de cette possibilité  grâce  à  l'action  conjointe  du  pilote  de
       terminal du noyau de système d'exploitation et de bash.

       L'interpréteur  associe  une tâche à chaque pipeline. Il maintient une table des tâches en
       cours d'exécution, cette table pouvant être affichée avec la  commande  jobs.  Quand  bash
       lance  une tâche de façon asynchrone (en arrière-plan), il affiche une ligne qui ressemble
       à :

              [1] 25647

       Cette ligne indique que la tâche est la tâche numéro 1 et que le PID du dernier  processus
       dans  le  pipeline  associé à cette tâche est 25647. Tous les processus d'un même pipeline
       font partie de la même tâche. Bash utilise la notion de tâche comme base du  contrôle  des
       tâches.

       Pour faciliter l'implémentation d'une interface utilisateur pour le contrôle de tâches, le
       système introduit la notion d'ID de groupe  de  processus  associés  à  un  terminal.  Les
       membres  de  ce groupe de processus (processus dont le GID est égal au Process Group ID du
       terminal actuel) reçoivent les signaux émis par le clavier  comme  SIGINT.  Ces  processus
       sont  dits  au  premier  plan. Les processus en arrière-plan sont ceux dont le Process-GID
       diffère de celui du terminal ; ils sont indifférents aux  signaux  émis  par  le  clavier.
       Seuls  les  processus au premier plan peuvent lire depuis le terminal ou, si l'utilisateur
       l'indique avec stty tostop, y écrire.  Les  processus  en  arrière-plan  qui  tentent  une
       lecture  (ou  une  écriture si stty tostop est actif) dans le terminal reçoivent un signal
       SIGTTIN (SIGTTOU) émis par le pilote du terminal du noyau, qui, sauf interception, suspend
       le processus.

       Si  le  système  d'exploitation  sur lequel bash fonctionne permet le contrôle des tâches,
       bash  fournit  des  outils  pour  l'utiliser.  La  frappe  d'un  caractère  de  suspension
       (généralement  ^Z,  Contrôle-Z) pendant l'exécution d'un processus conduit à la suspension
       de celui-ci et redonne la main à bash. La frappe d'un  caractère  de  suspension  différée
       (généralement  ^Y,  Contrôle-Y)  conduira  à  la  suspension  du processus au moment où il
       tentera de lire des saisies depuis le terminal et la main reviendra à bash.  L'utilisateur
       peut  alors  manipuler  l'état  de  cette  tâche en utilisant la commande bg (background =
       arrière-plan) pour en continuer l'exécution en arrière-plan, la commande fg (foreground  =
       premier  plan)  pour la continuer au premier plan ou encore la commande kill pour la tuer.
       Un ^Z s'applique immédiatement et a pour effet de bord d'éliminer les sorties  et  saisies
       en attente.

       Plusieurs  façons  permettent  de  se  rapporter à une tâche. Le caractère % introduit une
       spécification de tâche (jobspec). Il est possible de se rapporter à la tâche numéro n avec
       %n.  Il  est également possible de se rapporter à une tâche en utilisant un préfixe du nom
       utilisé pour la lancer ou une sous-chaîne qui apparaît dans  sa  ligne  de  commande.  Par
       exemple, %ce se rapporte à une tâche suspendue dont le nom de commande commence par ce. Si
       ce préfixe correspond à plusieurs tâches, bash signale une  erreur.  Utiliser  %?ce,  d'un
       autre côté, se rapporte à toute tâche contenant la chaîne ce dans sa ligne de commande. Si
       la sous-chaîne correspond à plusieurs tâches, bash signale une erreur. Les symboles %%  et
       %+ se rapportent à la notion de tâche actuelle de l'interpréteur, c'est-à-dire la dernière
       tâche suspendue alors qu'elle était au premier plan ou démarrée en arrière-plan. La  tâche
       précédente peut être désignée en utilisant %-. Si une seule tâche existe, %+ et %- peuvent
       tous deux être utilisés pour se rapporter à cette tâche. Dans les affichages se rapportant
       aux  tâches  (par  exemple  la sortie de la commande jobs), la tâche actuelle est toujours
       annotée d'un + et la tâche précédente d'un -. Un simple % (non accompagné de spécification
       de tâche) se rapporte également à la tâche actuelle.

       Il  suffit  de  nommer une tâche pour la ramener au premier plan : %1 est synonyme de « fg
       %1 » et ramène la tâche 1 de l'arrière-plan vers  le  premier  plan.  De  même,  « %1  & »
       reprend la tâche 1 en arrière-plan, de façon équivalente à « bg %1 ».

       L'interpréteur  est immédiatement prévenu lorsqu'une tâche change d'état. Normalement bash
       attend d'être prêt à afficher son interpréteur avant  de  signaler  des  changements  dans
       l'état  des  tâches,  afin  de ne pas interrompre toute autre sortie. Si l'option -b de la
       commande interne set est activée, bash signalera de  telles  modifications  immédiatement.
       Toute capture sur SIGCHLD est exécutée pour chaque enfant qui se termine.

       Si  une tentative visant à terminer bash est réalisée alors que des tâches sont suspendues
       (ou, si l'option d'interpréteur checkjobs a été activée par la commande interne shopt,  en
       cours  d'exécution),  l'interpréteur  affiche  un message d'avertissement, et, si l'option
       d'interpréteur checkjobs est activée, affiche la liste  les  tâches  et  leurs  états.  La
       commande  jobs peut alors être utilisée pour examiner leur état. Si une deuxième tentative
       est faite pour terminer sans commande intercalaire, l'interpréteur n'affiche  aucun  autre
       avertissement et les tâches suspendues sont terminées.

       Lorsque  l'interpréteur  est  dans  l'attente  d'une  tâche ou d'un processus utilisant la
       commande interne wait et que le contrôle des tâches est activé, wait rendra la main  quand
       la  tâche changera d'état. L'option -f fera que wait attendra que la tâche ou le processus
       termine avant de rendre la main.

INVITES

       Quand il est exécuté de façon interactive, bash affiche l'invite de base PS1 dès qu'il est
       prêt  à  lire une commande et l'invite secondaire PS2 quand il a besoin de plus de saisies
       pour exécuter une commande. Bash affiche PS0 après avoir lu une commande,  mais  avant  de
       l'exécuter.  Bash affiche PS4 comme décrit ci-dessus avant de tracer chaque commande quand
       l'option -x est activée. Bash permet de personnaliser ces chaînes d'invite, en insérant un
       certain  nombre  de  caractères spéciaux protégés par des contre-obliques qui sont décodés
       comme suit :
              \a     un caractère ASCII d'alarme (07) ;
              \d     la date au format « Jour_de_la_semaine Mois Quantième » (par exemple : « Tue
                     May 26 ») ;
              \D{format}
                     le  format  est passé à strftime(3) et le résultat est inséré dans la chaîne
                     de l'invite ; un format vide implique une représentation du temps spécifique
                     aux paramètres linguistiques régionaux. Les accolades sont nécessaires ;
              \e     un caractère de protection ASCII (033) ;
              \h     le nom de la machine, jusqu'au premier point « . » ;
              \H     le nom de la machine ;
              \j     le nombre de tâches actuellement gérées par l'interpréteur ;
              \l     le nom de base du nom de périphérique de terminal de l'interpréteur ;
              \n     changement de ligne ;
              \r     retour chariot (« carriage return ») ;
              \s     le  nom  de  l'interpréteur,  c'est-à-dire  le nom de base de $0 (la portion
                     suivant la dernière barre oblique) ;
              \t     l'heure actuelle au format HH:MM:SS sur 24 heures ;
              \T     l'heure actuelle au format HH:MM:SS sur 12 heures ;
              \@     l'heure actuelle au format HH:MM sur 12 heures ;
              \A     l'heure actuelle au format HH:MM sur 24 heures ;
              \u     le nom de l'utilisateur ;
              \v     la version de bash (par exemple, 2.00) ;
              \V     le numéro de version complet (avec  niveau  de  correctifs)  de  bash,  (par
                     exemple, 2.00.0) ;
              \w     la  valeur  de  la  variable  de l'interpréteur ($PWD), avec $HOME abrégé en
                     tilde « ~ » (utilise la valeur de la variable PROMPT_DIRTRIM) ;
              \W     le nom de base de $PWD, avec $HOME abrégé en tilde (« ~ ») ;
              \!     le numéro d'historique de la commande ;
              \#     le numéro de la commande ;
              \$     # si l'UID effectif est 0, $ sinon ;
              \nnn   le caractère de code octal nnn ;
              \\     une contre-oblique ;
              \[     débute une suite de caractères non imprimables, qui  peuvent  être  utilisés
                     pour   inclure  une  suite  de  caractères  de  contrôle  du  terminal  dans
                     l'interpréteur ;
              \]     finit une suite de caractères non imprimables.

       Le numéro de commande et le numéro d'historique sont généralement différents :  le  numéro
       d'historique  d'une  commande  correspond à sa position dans la file d'historique qui peut
       contenir des commandes relues depuis cette liste (consultez HISTORIQUE ci-dessous),  alors
       que le numéro de commande est simplement une position dans la suite de commandes exécutées
       depuis le début de la session  d'interpréteur  actuelle.  Après  que  la  chaîne  ait  été
       décodée,  elle est soumise au développement des paramètres, à la substitution de commande,
       au développement arithmétique, au découpage des mots et à la suppression des  protections,
       selon  la  valeur de l'option d'interpréteur promptvars (consultez la description de shopt
       dans COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). Cela  peut  avoir  des  effets  non
       désirés  si  des  portions  protégées  de  la  chaîne  apparaissent  à  l'intérieur  de la
       substitution de commande ou contiennent des caractères spéciaux pour le  développement  de
       mots.

READLINE

       C'est  la  bibliothèque  qui gère la lecture des saisies lors des sessions interactives de
       l'interpréteur,  à  moins  que  l'option  --noediting  ne  soit  indiquée  à  l'appel   de
       l'interpréteur.  Par  défaut  les  commandes  d'édition  de ligne sont similaires à celles
       d'Emacs. Une interface d'édition de ligne dans le style  vi  est  aussi  disponible.  Pour
       arrêter  l'édition  de  ligne  après  le démarrage de l'interpréteur, utiliser l'option +o
       emacs ou +o vi de la commande interne set (consultez COMMANDES INTERNES DE  L'INTERPRÉTEUR
       ci-dessous).

   Notation readline
       Dans  ce  paragraphe  on utilisera la notation « à la Emacs » pour indiquer les frappes de
       touches. Les touches Contrôle sont notées C-touche, par exemple C-n  signifie  Contrôle-N.
       De  même,  les  touches Méta sont notées par M-touche, ainsi M-x signifie Méta-X. (Sur les
       claviers  sans  touches  Méta,  M-x  signifie  ESC  x,  c'est-à-dire  presser  la   touche
       d'Échappement  puis  la  touche  x. Cela fait de ESC le préfixe méta. La combinaison M-C-x
       signifie ESC-Contrôle-x ou encore presser la touche d'Échappement puis maintenir la touche
       Contrôle enfoncée tout en pressant la touche x.)

       Les  commandes  readline  peuvent  recevoir  des arguments numériques, qui fonctionnent en
       règle générale comme compteurs de répétitions.  Parfois,  cependant,  c'est  le  signe  de
       l'argument  qui  est  significatif.  L'utilisation d'un argument négatif pour une commande
       agissant dans un sens donné (par exemple kill-line) conduit cette commande à agir dans  la
       direction  opposée.  Les commandes dont le comportement avec les arguments diffère de cela
       sont indiquées ci-dessous.

       Lorsqu'une commande est indiquée comme détruisant du texte, le texte effacé  est  en  fait
       sauvegardé pour une éventuelle récupération ultérieure (« yanking »). Il est conservé dans
       un  tampon  circulaire  (« kill  ring »).  Les  suppressions  successives   conduisent   à
       l'accumulation  du texte en un seul bloc qui peut être récupéré en une fois. Les commandes
       non destructives séparent les blocs de textes dans le tampon circulaire.

   Initialisation de readline
       Readline est personnalisé en plaçant des commandes dans un  fichier  d'initialisation  (le
       fichier  inputrc).  Le  nom  de  ce  fichier  est  pris dans la variable de l'interpréteur
       INPUTRC. Si cette variable est inexistante, le  nom  par  défaut  est  ~/.inputrc.  Si  ce
       fichier  n'existe  pas  ou  s'il  ne  peut  pas être lu, le dernier fichier par défaut est
       /etc/inputrc. Lorsqu'un programme utilisant la bibliothèque readline démarre,  le  fichier
       d'initialisation  est  lu et les raccourcis clavier et les variables sont mis en place. Il
       n'y a que quelques constructions élémentaires possibles dans le  fichier  d'initialisation
       de  readline.  Les  lignes  blanches  sont  ignorées. Les lignes commençant par # sont des
       commentaires. Les lignes commençant par $ indiquent des constructions conditionnelles. Les
       autres lignes indiquent des raccourcis clavier et des paramétrages de variables.

       Les  raccourcis  clavier par défaut peuvent être modifiés par un fichier inputrc. D'autres
       programmes qui utilisent cette bibliothèque peuvent ajouter  leurs  propres  commandes  et
       raccourcis.

       Par exemple, en plaçant

              M-Control-u: universal-argument
       ou
              C-Meta-u: universal-argument
       dans  le  fichier  inputrc,  on associera la suite de touches M-C-u à la commande readline
       universal-argument.

       Les caractères symboliques suivants sont acceptés : RUBOUT, DEL, ESC, LFD,  NEWLINE,  RET,
       RETURN, SPC, SPACE et TAB.

       En  plus  des  noms  de  commandes,  readline permet d'associer à une touche une chaîne de
       caractères qui sera insérée lorsque la touche est pressée (une macro).

   Raccourcis clavier readline
       La syntaxe pour contrôler les raccourcis clavier dans le fichier inputrc est simple.  Tout
       ce  qui  est  nécessaire  est le nom de la commande ou le texte d'une macro et la suite de
       touches à laquelle il faut l'associer. Les noms de touches peuvent être indiqués de  l'une
       des  deux  façons : comme un nom de touche symbolique, éventuellement précédé des préfixes
       Meta- ou Control- ou sous forme d'une suite de touches.

       En utilisant la forme touche:nom_de_fonction ou macro, touche est le nom de la  touche  en
       anglais. Par exemple :

              Control-u: universal-argument
              Meta-Rubout: backward-kill-word
              Control-o: "> sortie"

       Dans  l'exemple  ci-dessus,  C-u  est associé à la fonction universal-argument, M-DEL à la
       fonction backward-kill-word et C-o à l'exécution de  la  macro  exprimée  dans  la  partie
       gauche (c'est-à-dire, insérer le texte ``> output'' sur la ligne).

       Avec  la  seconde  forme,  "touches":nom_de_fonction  ou  macro, touches diffère de touche
       ci-dessus en ce que les  chaînes  notant  une  suite  complète  de  touches  peuvent  être
       indiquées  en  plaçant  la  suite  entre  guillemets  doubles. Certaines suites de touches
       d'échappement dans le style  GNU  Emacs  peuvent  être  utilisées,  comme  dans  l'exemple
       suivant, mais les noms de caractères symboliques ne sont pas reconnus.

              "\C-u": universal-argument
              "\C-x\C-r": re-read-init-file
              "\e[11~": "Function Key 1"

       Dans cet exemple, C-u est à nouveau associé à la fonction universal-argument, C-x C-r à la
       fonction re-read-init-file et ESC [ 1 1 ~ à l'insertion du texte ``Function Key 1''.

       Le jeu complet des suites de caractères de protection du style GNU Emacs est :
              \C-    préfixe Contrôle ;
              \M-    préfixe Méta ;
              \e     caractère de protection ;
              \\     contre-oblique ;
              \"     un guillemet " littéral ;
              \'     un guillemet ' littéral.

       En plus des suites de caractères de protection dans le style GNU Emacs, un second  jeu  de
       suites de caractères de protection par contre-obliques est disponible :
              \a     alerte (alarme) ;
              \b     effacement arrière (« backspace ») ;
              \d     effacement ;
              \f     saut de page (« form feed ») ;
              \n     changement de ligne ;
              \r     retour chariot (« carriage return ») ;
              \t     tabulation horizontale ;
              \v     tabulation verticale ;
              \nnn   le caractère 8 bits dont la valeur octale est nnn (un à trois chiffres) ;
              \xHH   le  caractère 8 bits dont la valeur hexadécimale est HH (un ou deux chiffres
                     hexadécimaux) ;

       Lorsqu'on saisit le texte d'une macro, il faut utiliser des guillemets simples ou  doubles
       pour indiquer la définition de la macro. Les textes non protégés sont considérés comme des
       noms de fonctions. Dans le corps de la macro, les protections par contre-oblique  décrites
       ci-dessus sont développées. La contre-oblique protégera tout autre caractère dans le texte
       de la macro, y compris " et '.

       Bash permet d'afficher ou de modifier les raccourcis clavier  readline  avec  la  commande
       interne  bind.  On  peut  basculer  d'un  mode  d'édition  à l'autre en mode interactif en
       utilisant l'option -o  de  la  commande  interne  set  (consultez  COMMANDES  INTERNES  DE
       L'INTERPRÉTEUR ci-dessous).

   Variables de readline
       Readline  dispose  de  variables permettant de personnaliser encore plus son comportement.
       Une variable peut être configurée dans le fichier inputrc avec une affectation de la forme

              set nom_de_variable valeur
       ou utilisant la commande interne bind  (consultez  COMMANDES  INTERNES  DE  L'INTERPRÉTEUR
       ci-dessous).

       Sauf  indication  contraire,  les variables de readline prennent les valeurs On ou Off (la
       casse étant sans importance). Les noms de variables non reconnues sont ignorés. Lorsqu'une
       valeur de variable est lue, les variables vides ou de valeur NULL, « on » (insensible à la
       casse) et « 1 » sont équivalentes à On. Toutes les autres valeurs sont équivalentes à Off.
       Les variables et leurs valeurs par défaut, sont :

       active-region-start-color
              Une  variable  de  chaîne  qui  contrôle  la  couleur  du  texte et du fond lors de
              l'affichage  du  texte  dans  la  zone  active   (consultez   la   description   de
              enable-active-region  ci-dessous).  Cette  chaîne ne doit pas occuper l'emplacement
              d'un caractère physique quelconque sur l'affichage, aussi  elle  devrait  consister
              uniquement  en  séquences  d'échappement  du terminal. Elle est envoyée au terminal
              avant l'affichage du texte dans la zone active. Cette  variable  est  remise  à  sa
              valeur  par défaut chaque fois que le type de terminal change. La valeur par défaut
              est la chaîne qui place le terminal en mode standout tel qu'obtenu à partir  de  la
              description   terminfo   du  terminal.  Cette  valeur  pourrait  être  par  exemple
              "\e[01;33m".
       active-region-end-color
              Une variable de chaîne qui « annule » les effets  de  active-region-start-color  et
              rétablit  l'apparence  « normale »  de l'affichage du terminal après l'affichage de
              texte dans la zone active. Cette chaîne ne  doit  pas  occuper  l'emplacement  d'un
              caractère  physique  quelconque  sur  l'affichage,  aussi  elle  devrait  consister
              uniquement en séquences d'échappement du terminal. Elle  est  envoyée  au  terminal
              après  l'affichage  du  texte  dans  la zone active. Cette variable est remise à sa
              valeur par défaut chaque fois que le type de terminal change. La valeur par  défaut
              est  la  chaîne  qui rétablit le terminal à partir du mode standout tel qu'obtenu à
              partir de la description terminfo du  terminal.  Cette  valeur  pourrait  être  par
              exemple "\e[0m".
       bell-style (audible)
              Cette variable commande readline lorsqu'il faut déclencher l'alarme du terminal. Si
              configurée à none, readline  n'émet  jamais  d'alarme.  Si  configurée  à  visible,
              readline  utilise  une  alarme visuelle s'il y en a une disponible. Si configurée à
              audible, readline essaie de faire sonner l'alarme du terminal.
       bind-tty-special-chars (On)
              Si configurée à On, readline tente d'associer les caractères  de  contrôle  traités
              spécialement par le pilote de terminal du noyau à leurs équivalents readline.
       blink-matching-paren (Off)
              Si  configurée  à  On,  readline  tente  de déplacer brièvement le curseur vers une
              parenthèse ouvrante lors de l'insertion d'une parenthèse fermante.
       colored-completion-prefix (Off)
              Si configurée à On, lors du listage des complètements, readline affiche le  préfixe
              commun  du jeu des complètements possibles en utilisant une couleur différente. Les
              définitions de couleur sont prises selon la valeur de la  variable  d’environnement
              LS_COLORS.  S'il  y  a  une  définition  de couleur dans $LS_COLORS pour le suffixe
              personnalisé « readline-colored-completion-prefix », readline utilise cette couleur
              pour le suffixe commun plutôt que la valeur par défaut.
       colored-stats (Off)
              Si  configurée  à On, readline affiche les complètements possibles en utilisant des
              couleurs différentes pour indiquer leur type de fichier. Les définitions de couleur
              sont prises dans la valeur de la variable d’environnement LS_COLORS.
       comment-begin  # »)
              Cette  chaîne  est  insérée quand la commande readline insert-comment est exécutée.
              Cette commande est associée à M-# en mode Emacs et à # en mode de commande vi.
       completion-display-width (-1)
              Le nombre de colonnes d'écran utilisées pour afficher de possibles  correspondances
              lors  de  la  réalisation  du  complètement.  La  valeur  est  ignorée  si elle est
              inférieure à 0 ou supérieure à la largeur de l'écran du terminal. Une valeur  de  0
              fera  que  les correspondances seront affichées une par ligne. La valeur par défaut
              est -1.
       completion-ignore-case (Off)
              Si configurée à On, readline effectue les correspondances et complètements de  noms
              de fichiers sans tenir compte de la casse.
       completion-map-case (Off)
              Si  configurée  à  On et completion-ignore-case activée, readline traite les traits
              d'union (-) et les  tirets  bas  (_)  comme  équivalents  lorsqu'elle  réalise  une
              recherche  de  correspondance et un complètement de nom de fichier insensibles à la
              casse.
       completion-prefix-display-length (0)
              La longueur,  en  caractères,  du  préfixe  commun  d'une  liste  de  complètements
              possibles affiché sans modification. Si configurée en valeur positive, les préfixes
              communs plus longs que  cette  valeur  sont  remplacés  par  une  ellipse  lors  de
              l'affichage des complètements possibles.
       completion-query-items (100)
              Cela   détermine   quand  l'utilisateur  est  interrogé  pour  voir  le  nombre  de
              complètements possibles produits par la commande  possible-completions.  Elle  peut
              être  configurée  à  toute  valeur  entière positive. Si le nombre de complètements
              possibles est supérieur ou égal à la valeur de cette variable, readline demandera à
              l'utilisateur  s'il  veut ou non les voir ; sinon, ils sont simplement affichés sur
              le terminal. Une valeur zéro  signifie  que  readline  ne  demandera  jamais ;  des
              valeurs négatives sont traitées comme un zéro.
       convert-meta (On)
              Si  configurée  à  On,  readline transformera les caractères avec leur huitième bit
              réglé à une suite de caractères ASCII en supprimant le huitième bit et en préfixant
              un  caractère de protection (en fait, en utilisant le caractère de protection comme
              préfixe méta). La configuration par défaut est On, mais readline la fixe à  Off  si
              le  paramètre  linguistique régional contient des caractères 8 bits. Cette variable
              dépend du paramètre linguistique régional LC_CTYPE et  peut  être  modifiée  si  le
              paramètre linguistique régional est changé.
       disable-completion (Off)
              Si  configurée à On, readline empêchera le complètement des mots. Les caractères de
              complètement seront insérés sur  la  ligne  comme  s'ils  avaient  été  associés  à
              self-insert.
       echo-control-characters (On)
              Si configurée à On, sur les systèmes d'exploitation le permettant, readline affiche
              un caractère correspondant à un signal provenant du clavier.
       editing-mode (emacs)
              Commande si readline doit démarrer avec des raccourcis clavier similaires  à  Emacs
              ou à vi. editing-mode peut être positionné soit à emacs, soit à vi.
       emacs-mode-string (@)
              Si   la  variable  show-mode-in-prompt  est  activée,  cette  chaîne  est  affichée
              immédiatement avant la dernière ligne de la première invite quand le  mode  édition
              d'Emacs  est  activé.  La valeur est développée comme un raccourci clavier, donc le
              jeu standard de préfixes meta- ou Control-  et  de  séquences  de  protections  par
              contre-oblique  est disponible. Utiliser les caractères de protection \1 et \2 pour
              ouvrir et fermer les séquences de caractères non  imprimables,  ce  qui  peut  être
              utilisé pour inclure une suite de caractères de contrôle du terminal dans la chaîne
              de mode.
       enable-active-region (On)
              Le curseur (« point ») correspond à la position actuelle du curseur  et  la  marque
              correspond  à  une position de curseur sauvegardée. Le texte entre le curseur et la
              marque est désigné comme la zone. Quand cette variable est réglée  à  On,  readline
              permet  à  certaines  commandes de désigner la zone comme active. Quand la zone est
              active,   readline   surligne   le   texte    en    utilisant    la    valeur    de
              active-region-start-color  qui est par défaut la chaîne qui active le mode standout
              du  terminal.  La  région  active  montre  le  texte  inséré  par  collage  spécial
              (bracketed-paste)   et   tout   texte   correspondant  trouvé  lors  de  recherches
              incrémentales et non-incrémentales dans l'historique.
       enable-bracketed-paste (On)
              Quand configurée à On, readline configurera le terminal pour pouvoir insérer chaque
              collage dans le tampon d'édition comme une chaîne de caractères uniques, plutôt que
              de traiter chaque caractère comme s'il  avait  été  lu  du  clavier.  Cela  empêche
              readline  d'exécuter  toute  commande  d'édition  liée  à  des  suites  de  touches
              apparaissant dans le texte collé.
       enable-keypad (Off)
              Quand  configurée  à  On,  readline  essayera  d'activer  le  pavé   numérique   de
              l'application  une  fois  appelée.  Sur  certains  systèmes,  c'est nécessaire pour
              utiliser les flèches.
       enable-meta-key (On)
              Quand  configurée  à  On,  readline  essayera  d'activer  toutes  les  touches   de
              modificateur  Méta  que  le terminal peut prendre en charge une fois appelé. Sur de
              nombreux terminaux, la touche Méta est utilisée pour saisir des caractères sur huit
              bits.
       expand-tilde (Off)
              Si  configurée  à On, le développement du tilde est effectué lorsque readline tente
              un complètement de commandes.
       history-preserve-point (Off)
              Si configurée à On, le programme d'historique tente de placer le  curseur  au  même
              endroit   sur   chaque   ligne  d'historique  récupérée  avec  previous-history  ou
              next-history.
       history-size (unset)
              Configure le nombre maximal d'éléments sauvegardés dans la file de l'historique. Si
              configuré  à  zéro,  tous  les  éléments sont effacés et aucun nouvel élément n’est
              sauvegardé. Si configuré à une valeur strictement négative, le nombre d'éléments de
              la  file  d’historique  n'est  pas  limité.  Par  défaut,  le nombre d’éléments est
              configuré à la valeur  de  la  variable  HISTSIZE  de  l'interpréteur.  En  cas  de
              tentative  de  régler  history-size  à  une valeur non numérique, le nombre maximal
              d'éléments est configuré à 5OO.
       horizontal-scroll-mode (Off)
              Quand configurée à On, readline utilisera  une  seule  ligne  d'affichage  et  fera
              défiler  la  saisie  horizontalement sur une seule ligne d'écran quand elle devient
              plus longue que la largeur de l'écran, plutôt que de faire un retour à la ligne. Ce
              réglage est activé automatiquement pour les terminaux de hauteur 1.
       input-meta (Off)
              Si  configurée à On, readline acceptera des saisies sur huit bits (autrement dit il
              ne supprimera pas le huitième bit), quel que  soit  le  terminal  utilisé.  Le  nom
              meta-flag est un synonyme pour cette variable. La configuration par défaut est Off,
              mais readline la fixe à On si  le  paramètre  linguistique  régional  contient  des
              caractères  8 bits.  Cette  variable  dépend  du  paramètre  linguistique  régional
              LC_CTYPE et peut être modifiée si le paramètre linguistique régional est changé.
       isearch-terminators  C-[C-J »)
              La chaîne de caractères qui doit terminer une recherche incrémentale  sans  que  le
              caractère  ne  soit  exécuté  comme une commande. Si cette variable n'a pas reçu de
              valeur, les caractères ESC et C-J termineront une recherche incrémentale.
       keymap (emacs)
              Configure le jeu de raccourcis readline actuel. L'ensemble  des  noms  corrects  de
              jeux   de   raccourcis  est  emacs,  emacs-standard,  emacs-meta,  emacs-ctlx,  vi,
              vi-command et vi-insert. vi est équivalent à vi-command ; emacs  est  équivalent  à
              emacs-standard.  La valeur par défaut est emacs ; la valeur de editing-mode modifie
              aussi le jeu de raccourcis par défaut.
       keyseq-timeout (500)
              Indique le temps que readline attendra un caractère lors de la lecture d’une  suite
              de  touches  ambiguë (c’est-à-dire qui peut former une suite de touches complète en
              utilisant l’entrée lue jusqu’à présent, ou accepter une entrée supplémentaire  pour
              compléter  une  suite de touches plus longue). Si aucune entrée n’est reçue pendant
              le temps d’attente, readline utilisera la suite la plus courte, mais  complète.  La
              valeur  est indiquée en milliseconde, donc une valeur de 1000 signifie que readline
              attendra pendant une seconde une  entrée  supplémentaire.  Si  cette  variable  est
              configurée  à une valeur inférieure ou égale à zéro, ou à une valeur non numérique,
              readline attendra la saisie d’une autre touche pour décider de la suite de  touches
              à compléter.
       mark-directories (On)
              Si configurée à On, une barre oblique est ajoutée aux noms de répertoires.
       mark-modified-lines (Off)
              Si  configurée à On, les lignes d'historique qui ont été modifiées seront précédées
              à l'affichage d'un astérisque (*).
       mark-symlinked-directories (Off)
              Si configurée à On, une barre oblique est ajoutée aux noms complétés si ce sont des
              liens symboliques vers des répertoires (selon la valeur de mark-directories).
       match-hidden-files (On)
              Cette  variable,  quand  elle  est  configurée  à  On,  conduit  readline  à  faire
              correspondre des fichiers dont le nom commence par un « . » (fichiers cachés)  lors
              du  complètement  de  noms de fichiers. Si configurée à Off, le « . » du début doit
              être fourni par l'utilisateur dans le nom de fichier à compléter.
       menu-complete-display-prefix (Off)
              Si configurée à On, le complètement de menu affiche le préfixe commun à la liste de
              complètements possibles (qui peut être vide) avant de tourner dans la liste.
       output-meta (Off)
              Si  configurée  à  On,  readline  affichera  directement  les caractères ayant leur
              huitième bit défini plutôt que d'utiliser une suite  de  caractères  de  protection
              avec  préfixe méta. La configuration par défaut est Off, mais readline la fixe à On
              si le  paramètre  linguistique  régional  contient  des  caractères  8 bits.  Cette
              variable  dépend  du paramètre linguistique régional LC_CTYPE et peut être modifiée
              si le paramètre linguistique régional est changé.
       page-completions (On)
              Si configurée à On, readline utilise un afficheur de texte  interne  du  type  more
              pour afficher les complètements possibles sur un seul plein écran.
       print-completions-horizontally (Off)
              Si  configurée  à  On,  readline  affichera  les complètements correspondants triés
              horizontalement dans l'ordre alphabétique plutôt que verticalement.
       revert-all-at-newline (Off)
              Si  configurée  à  On,  readline  annulera  toutes  les  modifications  des  lignes
              d'historique  avant  de  s'arrêter  quand  accept-line  est exécuté. Par défaut les
              lignes d'historique peuvent être modifiées et conservent  les  listes  d'annulation
              individuelles au fur et à mesure des appels à readline.
       show-all-if-ambiguous (Off)
              Cela  modifie  le  comportement  par  défaut  des  fonctions  de  complètement.  Si
              configurée à On, les mots qui ont plus d'un  complètement  possibles  conduisent  à
              l'affichage immédiat des correspondances plutôt qu'à l'émission d'une alarme.
       show-all-if-unmodified (Off)
              Cela  modifie  le  comportement  par  défaut des fonctions de complètement de façon
              similaire à show-all-if-ambiguous. Si configurée à On, les mots qui ont  plus  d'un
              complètement  possible  sans aucun complètement partiel possible (les complètements
              possibles ne partagent pas de préfixe commun) conduisent à l'affichage immédiat des
              correspondances plutôt qu'à l'émission d'une alarme.
       show-mode-in-prompt (Off)
              Si  configurée  à  On,  ajoute  une  chaîne  au début de l’invite indiquant le mode
              d’édition : Emacs, commande Vi ou insertion Vi. L'utilisateur  peut  configurer  la
              chaîne de mode (par exemple, emacs-mode-string).
       skip-completed-text (Off)
              Si  configurée  à  On,  modifie  le comportement par défaut du complètement lors de
              l'insertion d'une unique correspondance dans la ligne. Elle n'est utilisée que lors
              d'un  complètement  effectué  au  milieu  d'un  mot.  Si elle est activée, readline
              n'insère pas de caractères de complètement correspondant à  des  caractères  situés
              après  le  curseur  dans le mot en train d'être complété, ainsi les parties du mots
              situées après le curseur ne sont pas dupliquées.
       vi-cmd-mode-string ((cmd))
              Si  la  variable  show-mode-in-prompt  est  activée,  cette  chaîne  est   affichée
              immédiatement avant la dernière ligne de la première invite quand le mode d'édition
              de vi est activé et en mode commande. La valeur est développée comme  un  raccourci
              clavier,  donc  le  jeu  standard  de préfixes meta- ou Control- et de séquences de
              protections  par  contre-oblique  est  disponible.  Utiliser  les   caractères   de
              protection  \1  et  \2  pour  ouvrir  et  fermer  les  séquences  de caractères non
              imprimables, ce qui peut être utilisé pour  inclure  une  suite  de  caractères  de
              contrôle du terminal dans la chaîne de mode.
       vi-ins-mode-string ((ins))
              Si   la  variable  show-mode-in-prompt  est  activée,  cette  chaîne  est  affichée
              immédiatement avant la dernière ligne de la première invite quand le mode d'édition
              de  vi est activé et en mode insertion. La valeur est développée comme un raccourci
              clavier, donc le jeu standard de préfixes meta- ou  Control-  et  de  séquences  de
              protections   par   contre-oblique  est  disponible.  Utiliser  les  caractères  de
              protection \1 et  \2  pour  ouvrir  et  fermer  les  séquences  de  caractères  non
              imprimables,  ce  qui  peut  être  utilisé  pour inclure une suite de caractères de
              contrôle du terminal dans la chaîne de mode.
       visible-stats (Off)
              Si configurée à On, un caractère indiquant le type de fichier,  comme  signalé  par
              stat(2) est ajouté aux noms de fichiers en affichant les complètements possibles.

   Constructions conditionnelles de readline
       Readline implémente un mécanisme inspiré des fonctionnalités de compilation conditionnelle
       du préprocesseur C qui permet d'effectuer le paramétrage des  raccourcis  clavier  et  des
       variables selon les résultats de tests. Il y a quatre directives d'analyse utilisées.

       $if    La  structure  $if  permet  de  choisir  les raccourcis selon le mode d'édition, le
              terminal utilisé ou l'application utilisant  readline.  Le  texte  du  test,  après
              n’importe  quel  opérateur  de  comparaison,  va  jusqu'à la fin de la ligne ; sauf
              notation contraire, aucun caractère n'est nécessaire pour le délimiter.

              mode   La forme mode= de la directive $if est utilisée pour  vérifier  si  readline
                     est  en mode emacs ou vi. Cela peut être utilisé conjointement à la commande
                     set keymap, par exemple pour  ne  configurer  les  raccourcis  des  jeux  de
                     raccourcis  emacs-standard  et  emacs-ctlx  que  si readline démarre en mode
                     emacs.

              term   La forme term= peut  être  utilisée  pour  ajouter  des  raccourcis  clavier
                     spécifiques  au terminal, comme associer des suites de touches produites par
                     des touches de fonction du terminal. Le mot à droite du signe = est  comparé
                     à  la fois au nom complet du terminal et à la portion de nom du terminal qui
                     précède le premier signe -. Cela permet, par exemple, de faire  correspondre
                     sun avec à la fois sun et sun-cmd.

              version
                     Le  test  de  version peut être utilisé pour effectuer des comparaisons avec
                     des versions particulières de readline. La version est développée  selon  la
                     version  actuelle de readline. L'ensemble d'opérateurs de comparaison inclut
                     =, (et ==), !=, <=, >=, < et >. Le numéro de  version  fourni  à  droite  de
                     l'opérateur  consiste  en  un  numéro  de  version majeure, un point décimal
                     facultatif et un numéro de version mineure facultatif (par exemple, 7.1). Si
                     la  version  mineure  est  omise, on considère que c'est 0. L'opérateur peut
                     être séparé de la chaîne version et de l'argument du numéro de  version  par
                     une espace.

              application
                     La   structure  application  est  utilisée  pour  inclure  des  paramétrages
                     spécifiques à chaque application. Chaque programme utilisant la bibliothèque
                     readline  configure un nom d'application et un fichier d'initialisation peut
                     tester une valeur particulière. Ce  peut  être  utilisé  pour  associer  des
                     suites  de  touches  à  des  fonctions utiles pour un certain programme. Par
                     exemple, les commandes suivantes ajoutent une suite de touches  qui  protège
                     le mot actuel ou précédant dans bash :

                     $if Bash
                     # Protéger le mot actuel ou le précédant
                     "\C-xq": "\eb\"\ef\""
                     $endif

              variable
                     La structure variable fournit des tests d'égalité simples pour les variables
                     et les valeurs de readline. Les opérateurs de comparaison permis sont =, ==,
                     et  !=.  Le  nom  de  la  variable  doit  être séparé de l'opérateur par une
                     espace ; l'opérateur peut être séparé de la valeur à droite par une  espace.
                     Les  variables  de  chaîne  ainsi  que les variables booléennes peuvent être
                     testées. Les variables booléennes doivent être comparées aux valeurs  on  et
                     off.

       $endif Cette commande, comme on l'a vu dans l'exemple ci-dessus, termine une commande $if.

       $else  Permet d'ajouter des commandes qui seront exécutées si un $if échoue.

       $include
              Cette  directive prend un seul nom de fichier comme argument et y lit les commandes
              et  les  raccourcis.  Par  exemple,  la  directive  suivante  lirait   le   fichier
              /etc/inputrc :

              $include  /etc/inputrc

   Recherche
       Readline  fournit  des  commandes  de  recherche  au  sein  de  l'historique  de commandes
       (consultez HISTORIQUE ci-dessous) des lignes contenant une chaîne  donnée.  Il  y  a  deux
       modes de recherche : incrémental et non incrémental.

       Les  recherches  incrémentales  commencent  avant  même que l'utilisateur n'ait terminé de
       saisir la chaîne recherchée. À chaque caractère saisi, readline affiche l'élément  suivant
       de  l'historique  qui  correspond  à  la  chaîne  déjà  entrée. Une recherche incrémentale
       nécessite seulement  le  nombre  de  caractères  indispensable  pour  retrouver  l'élément
       d'historique  désiré.  Les  caractères  se  trouvant  dans la variable isearch-terminators
       servent à terminer une recherche incrémentale. Si aucune valeur n'a été affectée  à  cette
       variable,  les  caractères  Échappement (« Escape ») et Contrôle-J terminent une recherche
       incrémentale. Contrôle-G permet d'interrompre une recherche incrémentale et  de  restaurer
       la  ligne  originale.  Lorsque la recherche est finie, l'élément d'historique contenant la
       chaîne désirée devient la ligne actuelle.

       Pour trouver les autres éléments correspondant dans la file d'historique, saisissez  selon
       Contrôle-S  ou  Contrôle-R.  Cela  recherchera  en  avant  ou en arrière dans l'historique
       l'élément suivant correspondant à la chaîne saisie jusque-là. Toute autre suite de touches
       associée  à  une  commande readline interrompra la recherche et exécutera la commande. Par
       exemple, un changement de ligne interrompra la recherche et acceptera la ligne,  exécutant
       ainsi la commande de la file d'historique.

       Readline  se  souvient de la dernière chaîne de recherche incrémentale. Si deux Contrôle-R
       sont tapés sans caractère pour définir une nouvelle  recherche  de  chaîne,  toute  chaîne
       mémorisée sera utilisée.

       Les  recherches  non incrémentales lisent la chaîne désirée en entier avant de démarrer la
       recherche de correspondance dans la file d'historique. La  chaîne  peut  être  saisie  par
       l'utilisateur ou faire partie du contenu de la ligne actuelle.

   Noms des commandes readline
       Ce  qui suit est une liste des noms de commandes et les suites de touches auxquelles elles
       sont associées par défaut. Les noms de commandes sans suite de touche les accompagnant  ne
       sont  pas associées par défaut. Dans les descriptions suivantes, le curseur (« point ») se
       rapporte à la position actuelle du curseur et la marque se  rapporte  à  une  position  de
       curseur  sauvegardée  par la commande set-mark. Le texte entre le curseur et la marque est
       désigné comme la zone.

   Commandes de déplacement
       beginning-of-line (C-a)
              Reculer au début de la ligne actuelle.
       end-of-line (C-e)
              Avancer à la fin de la ligne.
       forward-char (C-f)
              Avancer d'un caractère.
       backward-char (C-b)
              Reculer d'un caractère.
       forward-word (M-f)
              Avancer jusqu'à la fin du  mot  suivant.  Les  mots  sont  composés  de  caractères
              alphanumériques (lettres et chiffres).
       backward-word (M-b)
              Reculer  jusqu'au  début  du  mot actuel ou du précédent. Les mots sont composés de
              caractères alphanumériques (lettres et chiffres).
       shell-forward-word
              Avancer jusqu'à la fin du mot suivant. Les mots sont séparés par des métacaractères
              non protégés de l'interpréteur.
       shell-backward-word
              Reculer jusqu'au début du mot actuel ou du précédent. Les mots sont séparés par des
              métacaractères non protégés de l'interpréteur.
       previous-screen-line
              Tenter de déplacer le curseur vers la même colonne physique de l'écran sur la ligne
              physique précédente de l'écran. Cela n'aura pas l'effet désiré si la ligne actuelle
              de readline n'accepte pas sur d'une ligne physique ou si le but n'est pas supérieur
              à la longueur de l'invite plus la largeur de l'écran.
       next-screen-line
              Tenter de déplacer le curseur vers la même colonne de l'écran physique sur la ligne
              suivante de l'écran physique. Cela n'aura pas l'effet désiré si la  ligne  actuelle
              de  readline  n'accepte pas plus d'une ligne physique ou si la longueur de la ligne
              actuelle de readline n'est pas supérieure à la longueur de l'invite plus la largeur
              de l'écran.
       clear-display (M-C-l)
              Effacer  l'écran  et,  si  possible,  le  tampon  de  défilement  du terminal, puis
              rafraîchir la ligne actuelle, en laissant la ligne actuelle au sommet de l'écran.
       clear-screen (C-l)
              Effacer l'écran, puis rafraîchir la ligne actuelle, en laissant la  ligne  actuelle
              au  sommet  de  l'écran.  S'il  y  a un argument, rafraîchir la ligne actuelle sans
              effacer l'écran.
       redraw-current-line
              Rafraîchir la ligne actuelle.

   Commandes de manipulation de l'historique
       accept-line (changement de ligne, retour chariot)
              Valider la ligne, sans se soucier de l'emplacement du curseur. Si  la  ligne  n'est
              pas  vide,  l'ajouter  à  la  file  d'historique,  sous  contrôle  de  la  variable
              HISTCONTROL. Si cette ligne est une ligne d'historique  modifiée,  restaurer  cette
              dernière.
       previous-history (C-p)
              Récupérer  la  commande  précédente  de  la file d'historique, en remontant dans la
              file.
       next-history (C-n)
              Récupérer la commande suivante dans la file d'historique,  en  descendant  dans  la
              file.
       beginning-of-history (M-<)
              Récupérer la première ligne de l'historique.
       end-of-history (M->)
              Retourner  à  la fin de l'historique de saisie, c'est-à-dire à la ligne en cours de
              saisie.
       operate-and-get-next (C-o)
              Valider la ligne actuelle pour exécution et  récupérer  de  l'historique  la  ligne
              suivante  liée  à  la  ligne  actuelle  pour  édition. Si un argument numérique est
              fourni, il spécifie l'entrée de l'historique à utiliser à  la  place  de  la  ligne
              actuelle.
       fetch-history
              Avec argument numérique, récupérer cette entrée de la file d'historique et en faire
              la ligne actuelle.  Sans  argument,  revenir  à  la  première  entrée  de  la  file
              d'historique.'
       reverse-search-history (C-r)
              Rechercher  en  arrière  dans  l'historique,  en  remontant.  C'est  une  recherche
              incrémentale.
       forward-search-history (C-s)
              Rechercher  en  avant  dans  l'historique,  en  descendant.  C'est  une   recherche
              incrémentale.
       non-incremental-reverse-search-history (M-p)
              Rechercher  une  chaîne  en arrière dans l'historique, en remontant depuis la ligne
              actuelle, utiliser une recherche non  incrémentale  pour  une  chaîne  fournie  par
              l'utilisateur.
       non-incremental-forward-search-history (M-n)
              Rechercher  une  chaîne  en  avant  dans  l'historique,  utiliser une recherche non
              incrémentale pour une chaîne fournie par l'utilisateur.
       history-search-forward
              Rechercher en avant dans l'historique la chaîne comprise entre le début de la ligne
              actuelle et la position du curseur. C'est une recherche non incrémentale.
       history-search-backward
              Rechercher  en  arrière  dans  l'historique la chaîne comprise entre le début de la
              ligne actuelle et la position du curseur. C'est une recherche non incrémentale.
       history-substring-search-backward
              Rechercher en arrière dans l'historique la chaîne comprise entre  le  début  de  la
              ligne  actuelle  et  la  position du curseur. La chaîne recherchée peut trouver une
              correspondance n'importe où dans une ligne de l'historique. C'est une recherche non
              incrémentale.
       history-substring-search-forward
              Rechercher en avant dans l'historique la chaîne comprise entre le début de la ligne
              actuelle et  la  position  du  curseur.  La  chaîne  recherchée  peut  trouver  une
              correspondance n'importe où dans une ligne de l'historique. C'est une recherche non
              incrémentale.
       yank-nth-arg (M-C-y)
              Insérer, à l'emplacement du curseur, le premier argument de la commande précédente.
              Généralement,  il  s'agit du second mot de la ligne précédente. Avec un argument n,
              insérer le n-ième mot de la commande précédente (les mots sont numérotés  à  partir
              de 0). Un argument négatif insère le n-ième mot en partant de la fin de la commande
              précédente. Une fois que l'argument n est traité, l'argument est extrait  comme  si
              le développement d'historique « !n » avait été indiqué.
       yank-last-arg (M-., M-_)
              Insérer  le dernier argument de la commande précédente (le dernier mot de l'élément
              précédent de la  file  d'historique).  Avec  un  argument  numérique,  se  comporte
              exactement comme yank-nth-arg. Les appels successifs à yank-last-arg remontent dans
              la file d'historique en insérant le dernier mot (ou le mot indiqué  par  l'argument
              du  premier  appel)  de  chaque  ligne  tour  à tour. Tous les arguments numériques
              fournis à ces appels  successifs  déterminent  la  direction  de  déplacement  dans
              l'historique.  Un argument négatif modifie la direction dans l'historique (en avant
              ou en arrière).  Les  outils  de  développement  d'historique  sont  utilisés  pour
              extraire  le  dernier  mot, comme si le développement d'historique « !$ » avait été
              indiqué.
       shell-expand-line (M-C-e)
              Développer, comme le fait l'interpréteur,  la  ligne  actuelle.  Cela  effectue  le
              développement  des  alias et d'historique, ainsi que tous les développements de mot
              de l'interpréteur. Consultez ci-dessous DÉVELOPPEMENT  DE  L'HISTORIQUE,  pour  une
              description détaillée du développement de l'historique.
       history-expand-line (M-^)
              Effectuer le développement d'historique sur la ligne actuelle. Consultez ci-dessous
              DÉVELOPPEMENT DE L'HISTORIQUE, pour une description détaillée.
       magic-space
              Effectuer le développement de l'historique sur la ligne  actuelle  et  insérer  une
              espace.  Consultez  ci-dessous  DÉVELOPPEMENT DE L'HISTORIQUE, pour une description
              détaillée.
       alias-expand-line
              Effectuer le développement  des  alias  sur  la  ligne  actuelle.  Consultez  ALIAS
              ci-dessus pour une description des développements d'alias.
       history-and-alias-expand-line
              Effectuer le développement de l'historique et des alias sur la ligne actuelle.
       insert-last-argument (M-., M-_)
              Un synonyme de yank-last-arg.
       edit-and-execute-command (C-x C-e)
              Appeler  un éditeur sur la ligne de commande actuelle et exécuter le résultat comme
              une commande d'interpréteur. Bash tente d'appeler, dans cet ordre, $VISUAL, $EDITOR
              et emacs comme éditeur.

   Commande d'édition de texte
       end-of-file (généralement C-d)
              Le  caractère indiquant la fin de fichier, comme défini, par exemple, par ``stty''.
              Si ce caractère est lu alors qu’aucun caractère n’est  sur  la  ligne,  et  que  le
              curseur est au début de la ligne, readline l’interprète comme le fin de l’entrée et
              renvoie EOF.
       delete-char (C-d)
              Effacer le caractère sous le curseur.  Si  cette  fonction  est  associée  au  même
              caractère  que  le  caractère EOF du terminal, comme c’est souvent le cas avec C-d,
              consultez les effets dans le paragraphe précédent.
       backward-delete-char (Effacement ou « Rubout »)
              Effacer le caractère avant le curseur. Lorsque un argument numérique  est  indiqué,
              le texte effacé est sauvegardé dans le tampon circulaire.
       forward-backward-delete-char
              Effacer  le caractère sous le curseur, sauf s'il est en fin de ligne, auquel cas le
              caractère avant le curseur est effacé.
       quoted-insert (C-q, C-v)
              Ajouter littéralement  sur  la  ligne  le  caractère  saisi  suivant.  Cela  permet
              d'insérer des caractères comme C-q, par exemple.
       tab-insert (C-v TAB)
              Insérer un caractère de tabulation.
       self-insert (a, b, A, 1, !, ...)
              Insérer le caractère mentionné.
       transpose-chars (C-t)
              Échanger  les  caractères  se  trouvant  devant  et sous le curseur. Le curseur est
              avancé d'un caractère. À la fin d'une ligne, les caractères échangés sont les  deux
              précédents. Les arguments négatifs n'ont aucun effet.
       transpose-words (M-t)
              Déplace le mot avant le curseur au-delà du mot après le curseur et déplace aussi le
              curseur sur ce mot. Si le curseur est à la fin de la ligne, cela échange  les  deux
              derniers mots de la ligne.
       upcase-word (M-u)
              Transformer  le mot actuel (ou le suivant) en majuscules. Avec un argument négatif,
              agir sur le mot précédent mais ne pas déplacer le curseur.
       downcase-word (M-l)
              Transformer le mot actuel (ou le suivant) en minuscules. Avec un argument  négatif,
              agir sur le mot précédent mais ne pas déplacer le curseur.
       capitalize-word (M-c)
              Passer  en  majuscule  l'initiale  du  mot actuel (ou du suivant). Avec un argument
              négatif, agir sur le mot précédent mais ne pas déplacer le curseur.
       overwrite-mode
              Basculer en mode d'écrasement. Avec un  argument  numérique  explicite  strictement
              positif, bascule en mode d'écrasement. Avec un argument numérique explicite négatif
              ou nul, bascule en mode d'insertion. Cette commande n'affecte que le  mode  emacs ;
              le  mode  vi  écrase de façon différente. Chaque appel à readline() démarre en mode
              d'insertion. En mode d'écrasement, les caractères associés à self-insert remplacent
              le  texte  sous  le  curseur  plutôt  que  de déplacer le texte vers la droite. Les
              caractères associés à backward-delete-char remplacent le caractère avant le curseur
              par une espace. Par défaut, cette commande n'est pas associée.

   Effacement et récupération
       kill-line (C-k)
              Effacer le texte depuis la position du curseur jusqu'à la fin de la ligne.
       backward-kill-line (C-x Effacement)
              Effacer en arrière jusqu'au début de ligne.
       unix-line-discard (C-u)
              Effacer le texte entre le début de la ligne et la position du curseur. Le texte est
              sauvegardé dans le tampon circulaire.
       kill-whole-line
              Effacer toute la ligne sans tenir compte de la position du curseur.
       kill-word (M-d)
              Effacer le texte entre le curseur et la fin du mot actuel ou, si  entre  des  mots,
              jusqu'à  la  fin  du  mot  suivant.  Les  limites des mots sont identiques à celles
              utilisées par forward-word.
       backward-kill-word (M-Effacement)
              Effacer le mot sous le curseur. Les  limites  de  mots  sont  identiques  à  celles
              utilisées par backward-word.
       shell-kill-word
              Effacer  le  texte  entre le curseur et la fin du mot actuel ou, si entre des mots,
              jusqu'à la fin du mot suivant. Les  limites  des  mots  sont  identiques  à  celles
              utilisées par shell-forward-word.
       shell-backward-kill-word
              Effacer  le  mot  sous  le  curseur.  Les  limites de mots sont identiques à celles
              utilisées par shell-backward-word.
       unix-word-rubout (C-w)
              Effacer le mot sous le curseur, en utilisant une espace  blanche  comme  limite  de
              mot. Le texte effacé est sauvegardé dans le tampon circulaire.
       unix-filename-rubout
              Effacer  le  mot sous le curseur, en utilisant l'espace blanche et la barre oblique
              comme limites de mot. Le texte supprimé est sauvegardé dans le tampon circulaire.
       delete-horizontal-space (M-\)
              Effacer toutes les espaces blanches et les tabulations autour du curseur.
       kill-region
              Effacer le texte de la zone actuelle.
       copy-region-as-kill
              Copier le texte de la zone vers le tampon circulaire.
       copy-backward-word
              Copier le mot précédant le curseur dans le tampon circulaire. Les limites  de  mots
              sont identiques à celles de backward-word.
       copy-forward-word
              Copier  le  mot  suivant  le curseur dans le tampon circulaire. Les limites de mots
              sont identiques à celles de forward-word.
       yank (C-y)
              Récupérer le texte au sommet du tampon circulaire à la position du curseur dans  le
              tampon.
       yank-pop (M-y)
              Exécuter  une  rotation  du  tampon  circulaire  et  récupérer le texte situé à son
              nouveau sommet. Cela ne fonctionne qu'après yank ou yank-pop.

   Arguments numériques
       digit-argument (M-0, M-1, ..., M--)
              Ajouter ce chiffre à l'argument en cours de rédaction ou créer un nouvel  argument.
              M-- crée un argument négatif.
       universal-argument
              Il  s'agit  d'une  autre façon d'indiquer un argument. Si cette commande est suivie
              d'un ou plusieurs chiffres facultativement précédés d'un signe moins, ces  chiffres
              définissent  l'argument.  Si  la  commande  est  suivie  de  chiffres, une nouvelle
              exécution de universal-argument termine l'argument numérique, mais est ignorée dans
              les  autres  cas.  Par exception, si cette commande est suivie immédiatement par un
              caractère qui n'est ni un chiffre ni le signe moins, le compteur d'arguments de  la
              commande  suivante  est multiplié par 4. Le compteur d'arguments est initialement à
              un, donc la première exécution de cette commande amène le  compteur  d'arguments  à
              quatre, une seconde fois porte le compteur d'arguments à seize et ainsi de suite.

   Complètement
       complete (TAB)
              Essayer  d'effectuer un complètement du texte situé avant le curseur. Bash effectue
              le complètement en considérant tour à  tour  le  texte  comme  une  variable  (s'il
              commence  par  $),  un  nom  d'utilisateur (s'il commence par ~), un nom de machine
              (s'il commence par @) ou une commande (y compris les alias et  les  fonctions).  Si
              aucun ne correspond, un complètement de nom de fichier est essayé.
       possible-completions (M-?)
              Afficher les complètements possibles pour le texte situé avant le curseur.
       insert-completions (M-*)
              Insérer avant le curseur l'ensemble des complètements qui auraient été produits par
              possible-completions.
       menu-complete
              Analogue à  complete,  mais  en  remplaçant  le  mot  à  compléter  par  une  seule
              correspondance  de la liste des complètements possibles. Des exécutions répétées de
              menu-complete parcourent la liste des complètements possibles, en  insérant  chaque
              correspondance  tour à tour. À la fin de la liste des complètements, une alarme est
              émise (selon la configuration de bell-style) et le texte original est restauré.  Un
              argument de n déplace de n positions dans la liste des correspondances. Un argument
              négatif peut être utilisé pour revenir en arrière dans la liste. Cette commande est
              destinée à être associée à la touche TAB, mais ne l'est pas par défaut.
       menu-complete-backward
              Identique   à  menu-complete,  mais  se  déplace  en  arrière  dans  la  liste  des
              complètements  possibles,  comme  si  un  argument  négatif  avait  été   passé   à
              menu-complete. Cette commande n'est associée à aucune touche par défaut.
       delete-char-or-list
              Effacer  le  caractère  sous  le  curseur  sauf  au début ou en fin de ligne (comme
              delete-char). En fin  de  ligne,  se  comporte  comme  possible-completions.  Cette
              commande n'est associée à aucune touche par défaut.
       complete-filename (M-/)
              Essayer le complètement des noms de fichiers sur le texte situé avant le curseur.
       possible-filename-completions (C-x /)
              Afficher  les complètements possibles du texte situé avant le curseur, traité comme
              un nom de fichier.
       complete-username (M-~)
              Essayer le complètement sur le texte situé avant le curseur, en le  traitant  comme
              un nom d'utilisateur.
       possible-username-completions (C-x ~)
              Afficher  les  complètements  possibles  du  texte  situé  avant  le curseur, en le
              traitant comme un nom d'utilisateur.
       complete-variable (M-$)
              Essayer le complètement sur le texte situé avant le curseur, en le  traitant  comme
              une variable de l'interpréteur.
       possible-variable-completions (C-x $)
              Afficher  les  complètements  possibles  du  texte  situé  avant  le curseur, en le
              traitant comme une variable de l'interpréteur.
       complete-hostname (M-@)
              Essayer le complètement sur le texte situé avant le curseur, en le  traitant  comme
              un nom de machine.
       possible-hostname-completions (C-x @)
              Afficher  les  complètements  possibles  du  texte  situé  avant  le curseur, en le
              traitant comme un nom de machine.
       complete-command (M-!)
              Essayer le complètement sur le texte situé avant le curseur, en le  traitant  comme
              un  nom  de commande. Le complètement des commandes essaie de faire correspondre le
              texte, dans cet ordre, aux  alias,  mots  réservés,  fonctions  de  l'interpréteur,
              commandes   internes   de   l'interpréteur  et  finalement  les  noms  de  fichiers
              exécutables.
       possible-command-completions (C-x !)
              Afficher les complètements possibles  du  texte  situé  avant  le  curseur,  en  le
              traitant comme un nom de commande.
       dynamic-complete-history (M-TAB)
              Essayer le complètement du texte situé avant le curseur, en le comparant aux lignes
              de la file d'historique lui correspondant pour les complètements possibles.
       dabbrev-expand
              Essayer le menu de complètement du texte situé avant le curseur,  en  le  comparant
              aux  lignes  de  la  file  d'historique  lui  correspondant  pour les complètements
              possibles.
       complete-into-braces (M-{)
              Effectuer un complètement en noms de fichiers et insérer la liste des complètements
              possibles  entre  accolades  afin  que la liste soit exploitable par l'interpréteur
              (consultez Développement des accolades ci-dessus).

   Macros clavier
       start-kbd-macro (C-x ()
              Démarrer la mémorisation dans la macro en cours des caractères tapés.
       end-kbd-macro (C-x ))
              Arrêter la mémorisation dans la macro en cours des caractères saisis  et  conserver
              la définition.
       call-last-kbd-macro (C-x e)
              Réexécuter  la dernière macro définie, en agissant comme si les caractères contenus
              dans cette macro étaient saisis au clavier.
       print-last-kbd-macro ()
              Afficher la dernière macro de clavier définie,  mise  en  forme  de  façon  à  être
              incorporée dans un fichier inputrc.

   Divers
       re-read-init-file (C-x C-r)
              Lire  le  contenu  du  fichier  inputrc  et  prendre  en  compte tous raccourcis ou
              affectations de variables qui s'y trouvent.
       abort (C-g)
              Abandonner l'édition  en  cours  et  émettre  une  alarme  de  terminal  (selon  la
              configuration de la variable bell-style).
       do-lowercase-version (M-A, M-B, M-x, ...)
              Si  le  caractère  x précédé de Méta est en majuscule, exécuter la commande qui est
              associée aux caractères minuscules correspondants. Le comportement est  non  défini
              si x est déjà en minuscule.
       prefix-meta (ESC)
              Considérer  le  prochain  caractère  saisi  comme  un  Méta. ESC f est équivalent à
              Meta-f.
       undo (C-_, C-x C-u)
              Fonction d'annulation incrémentale, chaque ligne étant mémorisée séparément.
       revert-line (M-r)
              Annuler toutes les modifications sur cette ligne. C’est équivalent à  répéter  undo
              suffisamment de fois pour ramener la ligne à son état initial.
       tilde-expand (M-&)
              Effectuer le développement du tilde sur le mot actuel.
       set-mark (C-@, M-<space>)
              Placer  la  marque  à la position actuelle du curseur. Si un argument numérique est
              fourni, la marque est posée à la position correspondante.
       exchange-point-and-mark (C-x C-x)
              Échanger le curseur et la marque. La position actuelle du curseur est configurée  à
              la  position  sauvegardée  précédemment  et  l'ancienne  position  du  curseur  est
              mémorisée comme la marque.
       character-search (C-])
              Un caractère est lu et le curseur déplacé à l'occurrence suivante de ce  caractère.
              Un argument négatif recherche les occurrences précédentes.
       character-search-backward (M-C-])
              Un  caractère  est  lu  et  le  curseur  déplacé  à  l'occurrence  précédente de ce
              caractère. Un argument négatif recherche les occurrences suivantes.
       skip-csi-sequence
              Lire suffisamment de caractères pour englober une suite  multitouche  comme  celles
              définies  pour  des  touches comme Début et Fin. De telles suites commencent par un
              indicateur  de  suite  de  contrôle  (« control  sequence  indicator »   ou   CSI),
              habituellement  ESC-[.  Si  cette  suite  est  associée  à  "\[",  les  touches qui
              produisent de telles suites n'auront  pas  d'effet  à  moins  d'être  explicitement
              associées  à une commande readline, au lieu d'insérer des caractères parasites dans
              le tampon d'édition. N'est associée à aucune touche par défaut,  mais  est  souvent
              associée à ESC-[.
       insert-comment (M-#)
              Sans  argument  numérique,  la  valeur de la variable comment-begin de readline est
              insérée au début de la ligne actuelle. Si un argument numérique est  fourni,  cette
              commande  agit  comme  une  bascule :  si  les  caractères  du  début  de  ligne ne
              correspondent pas à la valeur de comment-begin, la valeur est insérée,  sinon,  les
              caractères  de  comment-begin sont effacés du début de la ligne. Dans les deux cas,
              la ligne est acceptée comme si un changement de ligne avait été  saisi.  La  valeur
              par  défaut de comment-begin conduit cette commande à transformer la ligne actuelle
              de l'interpréteur en commentaire. Si un argument numérique conduit  à  l'effacement
              du caractère de commentaire, la ligne sera exécutée par l'interpréteur.
       spell-correct-word (C-x s)
              Effectuer  la  correction orthographique sur le mot actuel, en le traitant comme un
              répertoire ou un nom de fichier, de la même manière que l'option de  l'interpréteur
              cdspell.   Les   limites   des   mots   sont  identiques  à  celles  utilisées  par
              shell-forward-word.
       glob-complete-word (M-g)
              Le mot avant le curseur est traité comme un motif pour un développement de  chemin,
              avec  un  astérisque  implicitement  ajouté. Ce motif est utilisé pour produire une
              liste de noms de fichiers correspondants pour de possibles complètements.
       glob-expand-word (C-x *)
              Le mot précédant le curseur est considéré comme un motif de développement de chemin
              et  la  liste  des  fichiers  correspondants est insérée à sa place. Si un argument
              numérique est fourni, un astérisque est ajouté avant le développement du chemin.
       glob-list-expansions (C-x g)
              La liste des développements qui auraient  été  produits  par  glob-expand-word  est
              affichée  et  la  ligne  est  rafraîchie.  Si  un argument numérique est fourni, un
              astérisque est ajouté devant le développement du chemin.
       dump-functions
              Afficher toutes les fonctions et leurs raccourcis clavier sur le flux de sortie  de
              readline. Si un argument numérique est fourni, la sortie est mise en forme de façon
              à être incorporée dans un fichier inputrc.
       dump-variables
              Afficher toutes les variables readline modifiables et leurs valeurs sur le flux  de
              sortie  de  readline.  Si  un  argument numérique est fourni, la sortie est mise en
              forme de façon à être incorporée dans un fichier inputrc.
       dump-macros
              Afficher toutes les suites de touches  readline  associées  à  des  macros  et  les
              chaînes  auxquelles  elles  correspondent.  Si un argument numérique est fourni, la
              sortie est mise en forme de façon à être incorporée dans un fichier inputrc.
       display-shell-version (C-x C-v)
              Afficher des informations sur la version actuelle de bash.

   Complètement programmable
       Lorsqu'un complètement de mot est tenté pour un argument d'une commande pour laquelle  une
       spécification  de  complètement  a  été  définie en utilisant la commande interne complete
       (consultez COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous), les  outils  de  complètement
       programmables sont appelés.

       En  premier  lieu,  le  nom  de  la commande est identifié. Si le mot de commande est vide
       (complètement essayé en début de ligne vide), toutes les  spécifications  de  complètement
       définies  par l'option -E de complete sont utilisées. Si une spécification de complètement
       a été définie  pour  cette  commande,  elle  est  utilisée  pour  produire  la  liste  des
       complètements  possibles pour le mot. Si le mot de commande est un chemin d'accès complet,
       on cherche en premier lieu une  spécification  de  complètement  pour  le  chemin  d'accès
       complet.  Si  aucune  spécification  de  complètement n'est trouvée pour le chemin d'accès
       complet, une tentative est effectuée pour trouver une spécification de  complètement  pour
       la  partie  située  après  la  barre  oblique  finale.  Si ces recherches ne donnent aucun
       résultat sous forme  de  spécification  de  complètement,  toutes  les  spécifications  de
       complètement définies par l'option -D de complete sont utilisées par défaut. S'il n'existe
       pas de spécification de complètement par défaut, bash tente un développement  d'alias  sur
       le  mot  de  commande  en  dernier  ressort  et  tente  de  trouver  une  spécification de
       complètement pour le mot de commande  à  partir  de  n'importe  quel  développement  ayant
       réussi.

       Une  fois  qu'une  spécification  de  complètement  a  été trouvée, elle est utilisée pour
       produire la liste des mots correspondants. Si aucune spécification de  complètement  n'est
       trouvée,  le  complètement  par défaut de bash, tel que décrit ci-dessus dans Complètement
       est effectué.

       Tout d'abord, les actions définies par la spécification de  complètement  sont  utilisées.
       Seules  les  correspondances  préfixées  par  le  mot  à compléter sont renvoyées. Lorsque
       l'option -f ou -d  sont  utilisées  pour  le  complètement  des  noms  de  fichier  ou  de
       répertoire,   la   variable   d'interpréteur   FIGNORE   est  utilisée  pour  filtrer  les
       correspondances.

       Tous les complètements indiqués par le motif de développement de  chemin  de  l'option  -G
       sont  ensuite  produits.  Il  n'est  pas  nécessaire  que  les  mots produits par le motif
       correspondent au mot à compléter. La  variable  de  l'interpréteur  GLOBIGNORE  n'est  pas
       utilisée pour filtrer les correspondances, mais la variable FIGNORE est utilisée.

       Ensuite, la chaîne indiquée comme argument à l'option -W est prise en compte. Cette chaîne
       est tout d'abord découpée en utilisant les caractères de la variable  spéciale  IFS  comme
       délimiteurs.  Les  protections  de  l'interpréteur  sont  prises en compte. Chaque mot est
       ensuite développé en utilisant les développements d'accolades, du tilde, des paramètres et
       des  variables,  de  même que la substitution de commande et le développement arithmétique
       comme décrit ci-dessus dans DÉVELOPPEMENTS. Les résultats sont découpés en  utilisant  les
       règles  décrites  ci-dessus  dans  Découpage  en mots. Les résultats du développement sont
       comparés au mot  à  compléter  en  considérant  ce  dernier  comme  préfixe  et  les  mots
       correspondants deviennent les complètements possibles.

       Après  la  création  de  ces correspondances, toute fonction de l'interpréteur ou commande
       indiquée avec les options -F et -C est appelée. Lorsque la commande  ou  la  fonction  est
       appelée,  les  variables  COMP_LINE,  COMP_POINT,  COMP_LINKEY, et COMP_POINTYPE se voient
       affectées de valeurs comme décrit ci-dessus  dans  Variables  de  l'interpréteur.  Si  une
       fonction  de  l'interpréteur  est  appelée,  les  variables  COMP_WORDS et COMP_CWORD sont
       également créées. Lorsqu'une fonction ou une commande est  appelée,  le  premier  argument
       ($1)  est  le  nom  de  la commande dont les arguments doivent être complétés, le deuxième
       argument ($2) est le mot à compléter et le troisième argument ($3) est  le  mot  précédant
       celui  devant  être  complété  sur  la  ligne  de  commande  actuelle.  Aucun filtrage des
       complètements produits pour le mot à compléter n'est effectué ; la fonction ou la commande
       a toute liberté dans la production des correspondances.

       Toute fonction indiquée avec -F est appelée en premier. La fonction peut utiliser tous les
       outils de l'interpréteur, incluant la commande interne compgen  décrite  ci-dessous,  pour
       produire  les  correspondances.  Elle  doit  mettre  les  complètements  possibles dans la
       variable tableau COMPREPLY, un par élément de tableau.

       Ensuite, toute commande indiquée avec  l'option  -C  est  appelée  dans  un  environnement
       équivalent   à   la  substitution  de  commande.  Elle  devrait  afficher  une  liste  des
       complètements possibles, un  par  ligne,  sur  la  sortie  standard.  Si  nécessaire,  une
       contre-oblique peut être utilisée pour protéger un caractère de changement de ligne.

       Après  la création de tous les complètements possibles, tout filtre, indiqué avec l'option
       -X, est appliqué à la liste. Ce filtre est  un  motif  comme  dans  le  développement  des
       chemins ; un & dans le motif est remplacé par le texte du mot en cours de complètement. Un
       & littéral peut être protégé par une  contre-oblique ;  la  contre-oblique  est  supprimée
       avant  la  tentative  de mise en correspondance. Tout complètement qui correspond au motif
       sera supprimé de la liste. Un ! au début du motif provoque la négation de ce motif ;  dans
       ce  cas,  tout  complètement  ne  correspondant pas au motif sera supprimé de la liste. Si
       l'option d'interpréteur nocasematch est activée, la mise en correspondance  est  effectuée
       sans tenir compte de la casse des caractères alphabétiques.

       Finalement,  tous  préfixe  et  suffixe  indiqués avec les options -P et -S sont ajoutés à
       chacun des éléments de la liste de complètement et le résultat est renvoyé au programme de
       complètement de readline comme étant la liste des complètements possibles.

       Si  les  opérations  précédemment  appliquées  ne  produisent  aucune correspondance et si
       l'option -o dirnames a été fournie à complete lorsque la spécification de  complètement  a
       été définie, le complètement des noms de répertoire est tenté.

       Si l'option -o plusdirs a été fournie à complete lors de la définition de la spécification
       de complètement, le complètement des noms de répertoires est tenté et toute correspondance
       est ajoutée aux résultats des autres actions.

       Par  défaut, si une spécification de complètement est trouvée, tout ce qu'elle produit est
       renvoyé au programme de complètement comme un jeu complet des complètements possibles. Les
       complètements  par  défaut  de  bash ne sont pas tentés et le complètement de fichiers par
       défaut de readline est désactivé. Si l'option -o bashdefault a été fournie à complete lors
       de la définition de la spécification de complètement, les complètements par défaut de bash
       sont tentés si la spécification de  complètement  ne  produit  aucune  correspondance.  Si
       l'option  -o default a été fournie à complete lors de la définition de la spécification de
       complètement, le complètement par défaut de readline sera effectué si la spécification  de
       complètement  (et,  si  tentés,  les  complètements  par défaut de bash) ne produit aucune
       correspondance.

       Lorsqu'une spécification de complètement indique qu'un complètement de nom  de  répertoire
       est  souhaité,  les  fonctions de complètement programmable forcent readline à ajouter une
       barre oblique pour compléter les noms qui sont des liens symboliques vers des répertoires,
       selon la valeur de la variable mark-directories de readline, indépendamment du paramétrage
       de la variable mark-symlinked-directories de readline.

       La modification dynamique des complètements est également possible. C'est particulièrement
       utile  combiné  avec  un  complètement  par  défaut  indiqué  à l'aide de complete -D. Les
       fonctions de  l'interpréteur  exécutés  comme  gestionnaires  de  complètement  permettent
       d'annoncer que le complètement devrait être réessayé en renvoyant un état final de 124. Si
       une fonction de l'interpréteur renvoie 124, et modifie la  spécification  de  complètement
       associée  à  la  commande  sur  laquelle le complètement est essayé (fournie comme premier
       argument quand la fonction est exécutée), le complètement programmable  recommence  depuis
       le  début,  en  essayant  de trouver une nouvelle spécification de complètement pour cette
       commande. Un jeu de complètements peut  ainsi  être  construit  dynamiquement  lorsque  le
       complètement est essayé, plutôt que d'être chargé entièrement au début.

       Par   exemple,   en   supposant   l'existence  d'une  bibliothèque  de  spécifications  de
       complètement, chacune conservée dans un fichier correspondant au nom de  la  commande,  la
       fonction  de  complètement  par  défaut  suivante  chargerait  les  complètements de façon
       dynamique :

       _completion_loader()
       {
            . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
       }
       complete -D -F _completion_loader -o bashdefault -o default

HISTORIQUE

       Quand l'option -o history de la commande interne set  est  activée,  l'interpréteur  donne
       accès  à  un  historique  des  commandes, c'est-à-dire la liste des commandes précédemment
       utilisées. La valeur de la variable HISTSIZE est utilisée  comme  nombre  de  commandes  à
       sauvegarder  dans  la  file  d'historique.  Le texte des HISTSIZE dernières commandes (par
       défaut  500)  est  sauvegardé.  L'interpréteur  conserve  chaque  commande  dans  la  file
       d'historique   avant   le   développement  des  paramètres  et  des  variables  (consultez
       DÉVELOPPEMENTS ci-dessus) mais après avoir  effectué  le  développement  de  l'historique,
       selon les valeurs des variables de l'interpréteur HISTIGNORE et HISTCONTROL.

       Au  démarrage, l'historique est initialisé avec le fichier dont le nom est contenu dans la
       variable HISTFILE (par défaut ~/.bash_history).  Le  fichier  désigné  par  la  valeur  de
       HISTFILE  est  tronqué  si  nécessaire,  pour ne pas contenir plus de lignes que le nombre
       précisé par HISTFILESIZE. Si HISTFILESIZE est détruite, ou définie à NULL, une valeur  non
       numérique  ou  une valeur numérique strictement inférieure à zéro, le fichier d’historique
       n’est pas tronqué. Quand le fichier d'historique est lu,  les  lignes  commençant  par  le
       caractère  de commentaire d'historique suivi immédiatement par un chiffre sont considérées
       comme  des  horodatages  de  la  ligne  d'historique  précédente.  Ces  horodatages   sont
       facultativement affichés en fonction de la valeur de la variable HISTTIMEFORMAT. Lorsqu'un
       interpréteur avec historique activé se termine, les HISTSIZE dernières lignes de  la  file
       d'historique  sont copiées dans le fichier HISTFILE. Si l'option d'interpréteur histappend
       est activée (consultez la description de shopt dans COMMANDES INTERNES  DE  L'INTERPRÉTEUR
       ci-dessous),  les  lignes  sont  ajoutées  au  fichier  d'historique, sinon le fichier est
       écrasé. Si HISTFILE est inexistante ou si le fichier d'historique n'est pas accessible  en
       écriture, l'historique n'est pas sauvegardé. Si la variable HISTTIMEFORMAT est configurée,
       les horodatages sont écrits dans le fichier d'historique,  repérés  par  le  caractère  de
       commentaire  d'historique,  afin  d'être  conservés  au  fur  et  à mesure des sessions de
       l'interpréteur. Le caractère de  commentaire  d'historique  est  utilisé  pour  distinguer
       l'horodatage  des  autres  lignes de l'historique. Après la sauvegarde de l'historique, le
       fichier d'historique est tronqué pour ne pas contenir  plus  de  HISTFILESIZE  lignes.  Si
       HISTFILESIZE  est  détruite,  ou  définie  à  NULL, une valeur non numérique ou une valeur
       numérique inférieure à zéro, le fichier d’historique n’est pas tronqué.

       La commande interne fc (consultez COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous)  permet
       d'afficher,  d'éditer  ou  de  réexécuter  une partie de la file d'historique. La commande
       interne history permet  d'afficher  la  file  d'historique  et  de  manipuler  le  fichier
       d'historique.  Quelque  soit  le  mode  d'édition  en  ligne de commande, des commandes de
       recherche donnent accès à la file d'historique.

       L'interpréteur permet de configurer quelles commandes seront  sauvegardées  dans  la  file
       d'historique.  Les  variables  HISTCONTROL  et  HISTIGNORE  peuvent  être configurées pour
       conduire l'interpréteur à  ne  sauvegarder  qu'un  sous-ensemble  des  commandes  saisies.
       L'option   d'interpréteur  cmdhist,  si  activée,  conduit  l'interpréteur  à  essayer  de
       sauvegarder chaque ligne d'une commande multiligne dans le même élément  de  l'historique,
       en  ajoutant  des points-virgules si nécessaire pour préserver l'exactitude de la syntaxe.
       L'option d'interpréteur lithist conduit l'interpréteur à sauvegarder  les  commandes  avec
       des  changements  de ligne incorporés plutôt que des points-virgules. Consultez ci-dessous
       la description de la commande interne shopt dans COMMANDES INTERNES DE L'INTERPRÉTEUR pour
       des détails sur la création et la destruction des options d'interpréteur.

DÉVELOPPEMENT DE L'HISTORIQUE

       L'interpréteur  propose  des  possibilités  de  développement  de  l'historique  qui  sont
       semblables à celles de csh. Ce paragraphe décrit quelles syntaxes sont disponibles.  Cette
       fonctionnalité  est  activée  par  défaut  dans les interpréteurs interactifs et peut être
       désactivée en utilisant l'option +H  de  la  commande  interne  set  (consultez  COMMANDES
       INTERNES DE L'INTERPRÉTEUR ci-dessous). Les interpréteurs non interactifs n'effectuent pas
       de développement d'historique par défaut.

       Le développement de l'historique permet d'insérer des mots de la file d'historique dans le
       flux  de  saisie,  facilitant  la répétition de commandes, l'insertion des arguments d'une
       ligne antérieure dans la saisie en cours  ou  la  correction  rapide  d'erreurs  dans  les
       commandes précédentes.

       Le  développement  de l'historique est effectué immédiatement après la lecture d'une ligne
       complète, avant que l'interpréteur ne la décompose en mots. Il  est  effectué  sur  chaque
       ligne  individuellement  sans prendre en compte une protection sur les lignes précédentes.
       Il se déroule en deux parties. La première consiste à  déterminer  la  ligne  de  la  file
       d'historique  à  utiliser  pour  les  substitutions, la seconde permet de sélectionner les
       parties de la ligne  à  inclure  dans  la  ligne  actuelle.  La  ligne  sélectionnée  dans
       l'historique  est  l'événement  et  les parties de cette ligne à réutiliser sont des mots.
       Plusieurs modificateurs permettent de  manipuler  les  mots  sélectionnés.  La  ligne  est
       découpée  en  mots  de  la même façon que lors de la lecture d'une saisie, ainsi plusieurs
       mots séparés par des métacaractères et encadrés par des guillemets sont  considérés  comme
       un  unique  mot.  Le  développement  de  l'historique  est  introduit  par l'apparition du
       caractère de développement, qui est ! par défaut. Seules  la  contre-oblique  (\)  et  les
       guillemets  simples  permettent de protéger le caractère de développement de l'historique,
       mais le caractère de développement de l'historique est aussi  traité  comme  protégé  s'il
       précède  immédiatement  le  guillemet  double  fermant  dans  une  chaîne entre guillemets
       doubles.

       Plusieurs  caractères  empêchent  le  développement  de  l'historique  s'ils  se  trouvent
       immédiatement  après  le  caractère  de développement de l'historique, même s'il n'est pas
       protégé : espace, tabulation, changement de  ligne,  retour  chariot  et  =.  Si  l'option
       d'interpréteur extglob est activée, ( empêchera aussi le développement.

       Plusieurs options d'interpréteur, configurables avec la commande interne shopt, permettent
       d'ajuster le comportement du développement de  l'historique.  Si  l'option  d'interpréteur
       histverify  est activée (consultez la description de la commande interne shopt ci-dessous)
       et si readline est utilisée, les substitutions d'historique ne sont pas transmises tout de
       suite  à l'analyseur de l'interpréteur. À la place, la ligne développée est rechargée dans
       le tampon d'édition de readline pour permettre des modifications ultérieures. Si  readline
       est  utilisée  et  si  l'option  histreedit est activée, une substitution d'historique qui
       échoue est rechargée dans la mémoire tampon de readline pour correction. L'option -p de la
       commande  interne  history  peut servir à examiner ce qu'une substitution donnera avant de
       l'employer réellement. L'option -s de la commande interne  history  permet  d'ajouter  des
       commandes  à  la  fin de la file d'historique sans les avoir effectivement exécutées, afin
       qu'elles soient disponibles pour des rappels ultérieurs.

       L'interpréteur offre le contrôle des  divers  caractères  utilisés  par  le  mécanisme  de
       développement  de  l'historique  (consultez  la  description  de  histchars ci-dessus dans
       Variables  de  l'interpréteur).  L'interpréteur  utilise  le  caractère   de   commentaire
       d'historique pour repérer l'horodatage lors de l'écriture du fichier d'historique.

   Indicateur d'événement
       Un  indicateur  d'événement  est une référence à un élément ligne de commande dans la file
       d'historique. Sauf s'il s'agit d'une référence absolue, les événements sont relatifs à  la
       position actuelle dans la file d'historique.

       !      Débute  une substitution d'historique, sauf s'il est suivi par un blanc, changement
              de ligne, retour chariot, = ou  (  (lorsque  l'option  d'interpréteur  extglob  est
              activée en utilisant la commande interne shopt).
       !n     Se rapporte à la ligne de commande n.
       !-n    Se rapporte à la commande actuelle moins n.
       !!     Se rapporte à la commande précédente. C'est un synonyme de « !-1 ».
       !chaîne
              Se  rapporte  à  la commande la plus récente précédant la position actuelle dans la
              file d'historique commençant par chaîne.
       !?chaîne[?]
              Se rapporte à la commande la plus récente précédant la position  actuelle  dans  la
              file  d'historique  contenant  chaîne.  Le  ?  final  peut  être omis si chaîne est
              immédiatement suivie d'un changement de ligne. Si chaîne est absente, la chaîne  de
              la  dernière  recherche est utilisée ; c'est une erreur s'il n'y a pas de chaîne de
              recherche précédente.
       ^chaîne_1^chaîne_2^
              Substitution rapide. Répéter la commande  précédente  en  remplaçant  chaîne_1  par
              chaîne_2.   Équivalent   à   « !!:s^chaîne_1^chaîne_2^ »  (consultez  Modificateurs
              ci-dessous).
       !#     La ligne entière tapée jusqu'à présent.

   Indicateurs de mots
       Ces indicateurs servent à sélectionner les mots désirés dans un  événement.  Un  :  sépare
       l'indicateur d'événements de l'indicateur de mot. On peut l'omettre si l'indicateur de mot
       commence par ^, $, *, - ou %. Les mots sont numérotés depuis le  début  de  la  ligne,  le
       premier étant noté 0 (zéro). Les mots sont insérés dans la ligne actuelle, séparés par des
       espaces.

       0 (zéro)
              Le zéroième mot. Pour l'interpréteur, c'est le nom de la commande.
       n      Le n-ième mot.
       ^      Le premier argument, c'est-à-dire le mot 1.
       $      Le dernier mot. C’est généralement le dernier argument, mais qui sera développé  en
              zéroième mot s’il n’y a qu’un seul mot sur la ligne.
       %      Le  premier  mot  correspondant  à la recherche « ?chaîne? » la plus récente, si la
              chaîne de recherche débute par un caractère qui fait partie d'un mot.
       x-y    Un intervalle de mots, « -y » permet d'abréger « 0-y ».
       *      Tous les mots sauf le zéroième. C'est un synonyme pour « 1-$ ». Il n'est pas erroné
              d'utiliser  *  s'il  n'y a qu'un mot dans l'événement ; la chaîne vide est renvoyée
              dans ce cas.
       x*     Abréviation de x-$.
       x-     Abréviation de x-$ comme x*, mais sans le dernier mot. Si x est absent,  la  valeur
              par défaut est 0.

       Si  un  indicateur de mot est fourni sans indication d'événement, la dernière commande est
       utilisée.

   Modificateurs
       Après un indicateur de mot facultatif, une  suite  d'un  ou  plusieurs  des  modificateurs
       suivants  peut  apparaître, chacun précédé par un « : ». Cela modifie ou corrige le ou les
       mots sélectionnés à partir de l’événement de l'historique.

       h      Éliminer la fin du chemin d'accès, en ne gardant que le début.
       t      Supprimer tout le début d'un chemin d'accès, en ne gardant que la fin.
       r      Supprimer un suffixe final de la forme .xxx, en ne gardant que le nom de base.
       e      Supprimer tout sauf le suffixe final.
       p      Afficher la nouvelle commande sans l'exécuter.
       q      Protéger les mots substitués, pour éviter des substitutions futures.
       x      Protéger les mots substitués comme avec q, mais avec séparation des mots aux blancs
              et  changements  de  ligne.  Les  modificateurs q et x s'excluent mutuellement ; le
              dernier fourni est utilisé.
       s/ancien/nouveau/
              Remplacer par nouveau la première occurrence de ancien sur  la  ligne  d'événement.
              Tout  caractère  peut  être  utilisé  comme  délimiteur à la place de /. Le dernier
              délimiteur est facultatif si c'est le dernier caractère de la ligne d'événement. Le
              délimiteur  peut être protégé dans ancien et nouveau avec une seule contre-oblique.
              Si & apparaît dans nouveau, il est remplacé par ancien.  Une  seule  contre-oblique
              protégera le &. Si ancien est NULL, il est configuré au dernier ancien substitué ou
              si aucune substitution n'a eu lieu précédemment, à  la  dernière  chaîne  dans  une
              recherche  !?chaîne[?].  Si  nouveau  est  NULL, chaque correspondance à ancien est
              supprimée.
       &      Répéter la substitution précédente.
       g      Appliquer  les  modifications  sur  toute  la  ligne  d'événements.  C'est  utilisé
              conjointement  à « :s » (par exemple « :gs/ancien/nouveau/ ») ou « :& ». Si utilisé
              avec « :s », tout délimiteur peut être utilisé à  la  place  de  /  et  le  dernier
              délimiteur  est  facultatif si c'est le dernier caractère de la ligne d'événements.
              Un a peut être utilisé en tant que synonyme de g.
       G      Appliquer une fois le modificateur « s » ou « & » suivant à tous  les  mots  de  la
              ligne d'événement.

COMMANDES INTERNES DE L'INTERPRÉTEUR

       Sauf  indication  contraire,  chaque  commande  interne  décrite  dans ce paragraphe comme
       acceptant des options précédées par - accepte également la notation --  pour  signaler  la
       fin des options. Les commandes internes :, true, false et test/[ n'acceptent aucune option
       et ne traitent pas -- particulièrement.  Les  commandes  internes  exit,  logout,  return,
       break,  continue,  let  et shift acceptent et traitent les arguments commençant par - sans
       avoir besoin de --. Les autres commandes internes, qui acceptent des arguments mais qui ne
       sont  pas  déclarées  explicitement comme acceptant des options, considèrent les arguments
       commençant par - comme des options non valides, donc -- est obligatoire pour éviter  cette
       interprétation.
       : [arguments]
              Sans  effet ;  cette  commande ne fait rien d'autre que développer les arguments et
              effectuer toute redirection indiquée. L'état renvoyé est 0.

        .  fichier [arguments]
       source fichier [arguments]
              Lire et exécuter les commandes du fichier dans  l'environnement  de  l'interpréteur
              actuel, puis renvoyer l'état final de la dernière commande exécutée depuis fichier.
              Si le nom du fichier ne contient pas de barre oblique, les chemins d'accès contenus
              dans  PATH  sont parcourus pour rechercher le répertoire contenant le fichier, mais
              le fichier n'a pas besoin d'être exécutable. Lorsqu'il est recherché dans  PATH  le
              fichier  n'a pas besoin d'être exécutable. Lorsque bash n'est pas en mode POSIX, il
              examine le répertoire de travail actuel si aucun fichier n'est trouvé dans PATH. Si
              l'option  sourcepath de la commande interne shopt est désactivée, le PATH n'est pas
              parcouru. Si des arguments sont fournis, ils  sont  transmis  dans  les  paramètres
              positionnels  lorsque  le fichier est exécuté. Sinon les paramètres positionnels ne
              sont pas modifiés. Si l'option -T est activée, . hérite de toutes les  captures  de
              DEBUG ;  si  elle  ne  l'est  pas,  toutes  les  chaînes  de  capture de DEBUG sont
              sauvegardées et restaurées autour de l'appel à ., et  détruit les captures de DEBUG
              lors  de  son  exécution.  Si  -T n'existe pas et si le fichier venant de la source
              modifie la capture de DEBUG, la nouvelle valeur est conservée quand .  se  termine.
              L'état  renvoyé est l'état de la dernière commande terminée au sein du script (0 si
              aucune commande n'a été exécutée) et faux si le fichier n'est pas trouvé ou ne peut
              être lu.

       alias [-p] [nom[=valeur] ...]
              La  commande alias sans argument ou avec l'option -p affiche sur la sortie standard
              la liste des alias actuellement définis, sous  la  forme  nom=valeur.  Lorsque  des
              arguments  sont  fournis,  un  alias est créé pour chaque nom auquel on a donné une
              valeur. Une espace finale dans une valeur conduira à la recherche d'alias  dans  le
              mot  suivant  lors  du  développement  de  l'alias.  Pour tous les noms sans valeur
              fournie dans la liste d'arguments, le nom et la valeur de l'alias sont affichés. La
              commande  alias renvoie vrai, à moins qu'un nom n'ait été indiqué pour lequel aucun
              alias n'a été défini.

       bg [tâche ...]
              Reprendre en arrière-plan chaque tâche suspendue, comme si elle  avait  été  lancée
              avec  &. Si aucune tâche n'est précisée, la notion d'interpréteur de tâche actuelle
              est utilisée. bg tâche renvoie 0 sauf si le contrôle des tâches est désactivé,  ou,
              quand  le contrôle des tâches est activé, si une tâche précisée n'a pas été trouvée
              ou a été lancée sans contrôle de tâches.

       bind [-m jeu_de_raccourcis] [-lpsvPSVX]
       bind [-m jeu_de_raccourcis] [-q fonction] [-u fonction] [-r suite_de_touches]
       bind [-m jeu_de_raccourcis] -f fichier
       bind [-m jeu_de_raccourcis] -x suite_de_touches:commande_de_l'interpréteur
       bind [-m jeu_de_raccourcis] suite_de_touches:nom_de_fonction
       bind [-m jeu_de_raccourcis] suite_de_touches:commande_readline
       bind readline-command-line
              Afficher les associations de  touches  readline  actuelles  et  les  raccourcis  de
              fonctions,  associer  une  suite de touches à une fonction ou une macro readline ou
              créer une variable readline. Chaque argument qui  n'est  pas  une  option  est  une
              commande comme elle devrait apparaître dans un fichier d'initialisation de readline
              comme .inputrc, mais chaque  raccourci  ou  commande  doit  être  fourni  comme  un
              argument  indépendant ; par exemple « "\C-x\C-r": re-read-init-file ». Les options,
              si fournies, ont les significations suivantes :
              -m jeu_de_raccourcis
                     Utiliser le jeu_de_raccourcis comme jeu de raccourcis devant  être  concerné
                     par  les raccourcis ultérieurs. Les noms de jeu_de_raccourcis possibles sont
                     emacs, emacs-standard, emacs-meta, emacs-ctlx, vi,  vi-move,  vi-command  et
                     vi-insert.  vi est équivalent à vi-command (vi-move est aussi un synonyme) ;
                     emacs est équivalent à emacs-standard.
              -l     Afficher la liste des noms de toutes les fonctions readline.
              -p     Afficher les noms des fonctions readline et  leurs  raccourcis  de  façon  à
                     pouvoir les relire.
              -P     Afficher les noms des fonctions readline et leurs raccourcis.
              -s     Afficher  les suites de touches readline associées aux macros et les chaînes
                     correspondantes, de façon à pouvoir les relire.
              -S     Afficher les suites de touches readline associées aux macros et les  chaînes
                     correspondantes.
              -v     Afficher les noms des variables readline et leurs valeurs de façon à pouvoir
                     les relire.
              -V     Afficher les noms des variables readline et leurs valeurs.
              -f fichier
                     Lire les raccourcis clavier dans fichier.
              -q fonction
                     Rechercher les touches permettant d'appeler la fonction indiquée.
              -u fonction
                     Dissocier toutes les touches associées à fonction.
              -r suite_de_touches
                     Supprimer tout raccourci actuel pour la suite_de_touches.
              -x suite_de_touches:commande_de_l'interpréteur
                     Conduire la commande_de_l'interpréteur à être exécutée chaque  fois  que  la
                     suite_de_touches   est   saisie.  Quand  la  commande_de_l'interpréteur  est
                     exécutée, l'interpréteur configure la variable READLINE_LINE au  contenu  du
                     tampon de ligne de readline et les variables READLINE_POINT et READLINE_MARK
                     à la position actuelle  du  curseur  d'insertion  et  du  point  d'insertion
                     sauvegardé  (la marque) respectivement. L'interpréteur affecte tout argument
                     numérique fourni par l'utilisateur à la variable READLINE_ARGUMENT. S'il n'y
                     a  pas d'argument, la variable n'existe pas. Si la commande exécutée modifie
                     les valeurs de READLINE_LINE, READLINE_POINT ou READLINE_MARK, ces nouvelles
                     valeurs seront prises en considération dans l'état d'édition.
              -X     Afficher   toutes   les   suites  de  touches  associées  aux  commandes  de
                     l’interpréteur et aux commandes associées pour pouvoir être  réutilisées  en
                     entrée.

              La valeur renvoyée est 0, à moins qu'une option inconnue ne soit indiquée ou qu'une
              erreur ne se soit produite.

       break [n]
              Sortir d'une boucle for, while, until ou select. Si n  est  indiqué,  sortir  de  n
              niveaux  de  boucles.  n  doit  être  ≥  1. Si n est supérieur au nombre de boucles
              imbriquées, sortir de toutes les boucles. La valeur renvoyée est 0, à moins  que  n
              ne soit pas supérieur ou égal à 1.

       builtin commande_interne [arguments]
              Exécuter  la  commande  interne  de  l'interpréteur  indiquée,  en  lui passant les
              arguments, puis renvoyer son  état  final.  C'est  utile  lorsqu'une  fonction  est
              définie avec le même nom qu'une commande interne, et que cette commande est appelée
              depuis l'intérieur de la fonction. La commande interne cd est souvent redéfinie  de
              cette  façon. L'état renvoyé est faux si la commande_interne n'est pas une commande
              interne de l'interpréteur.

       caller [expr]
              Renvoyer le contexte de  tout  appel  de  sous-programme  actif  (une  fonction  de
              l'interpréteur  ou  un  script lancé avec les commandes internes . ou source). Sans
              expr, caller affiche le numéro de ligne et le  nom  de  fichier  du  sous-programme
              actuel.  Si  un  entier  positif est fourni comme expr, caller affiche le numéro de
              ligne, le nom du sous-programme et le nom de  fichier  source  correspondant  à  la
              position   dans   la   pile   d'appels   d'exécution  actuelle.  Cette  information
              supplémentaire peut être utilisée, par exemple, pour afficher une trace de la pile.
              La  trame  actuelle  est  la  trame  0.  La  valeur  renvoyée  est  0,  à moins que
              l'interpréteur ne soit pas en train d'exécuter un sous-programme  ou  que  expr  ne
              corresponde pas à une position correcte dans la pile d'appels.

       cd [-L|[-P [-e]] [-@]] [rép]
              Remplacer  le  répertoire  de  travail  actuel par rép. Si rép n’est pas fourni, la
              valeur de la variable d’interpréteur HOME est la valeur  par  défaut.  La  variable
              CDPATH  définit des chemins de recherche pour trouver le répertoire contenant rép :
              tous les noms de répertoire contenus dans CDPATH sont parcourus à la  recherche  de
              rép.  Les  répertoires  possibles  y  sont  fournis  dans une liste séparés par des
              deux-points « : ». Un  nom  de  répertoire  NULL  dans  CDPATH  est  équivalent  au
              répertoire  actuel,  c'est-à-dire « . ». Si rép commence par une barre oblique (/),
              alors CDPATH n'est pas utilisé. L'option -P force cd à n'employer que la  structure
              de  répertoires  physiques  en résolvant les liens symboliques en traversant rép et
              avant de traiter les instances de .. dans rép (consultez aussi l'option  -P  de  la
              commande  interne  set) ;  l'option  -L  force  à  suivre  les liens symboliques en
              résolvant les liens symboliques après le traitement des instances de ..  dans  rép.
              Si  ..  apparaît  dans  rép,  il  est  traité  en supprimant le composant de chemin
              précédant directement rép, jusqu’à une  barre  oblique  ou  le  début  de  rép.  Si
              l'option -e est fournie avec -P, et que le répertoire de travail actuel ne peut pas
              être déterminé avec succès après  un  changement  de  répertoire  avec  succès,  cd
              renverra  un état d'échec. Sur les systèmes qui le permettent, l’option -@ présente
              les attributs étendus associés à un fichier comme à un répertoire.  Un  argument  -
              est  converti  en $OLDPWD avant d’essayer un changement de répertoire. Si un nom de
              répertoire non vide de CDPATH est utilisé ou si - est le premier argument et si  le
              changement de répertoire réussit, le chemin absolu du nouveau répertoire de travail
              est écrit sur la sortie standard.  Si  le  changement  de  répertoire  réussit,  cd
              définit  la  valeur de la variable d'environnement PWD au nom du nouveau répertoire
              et règle la variable d'environnement OLDPWD à celle du  répertoire  de  travail  en
              cours  avant  le  changement.  La  valeur  renvoyée  est  vrai  si le changement de
              répertoire a réussi, faux sinon.

       command [-pVv] commande [arguments ...]
              Exécuter la commande avec les arguments indiqués, mais en supprimant  le  processus
              habituel de recherche des commandes. Seules les commandes internes ou les commandes
              trouvées dans PATH seront exécutées. Si l'option -p est indiquée, la  recherche  de
              la commande est effectuée en utilisant une valeur par défaut pour PATH garantissant
              de trouver tous les utilitaires standards. Si l'option -V ou -v  est  fournie,  une
              description  de  la  commande  est affichée. L'option -v conduit à n'afficher qu'un
              seul mot indiquant la commande ou  le  nom  de  fichier  utilisé  pour  appeler  la
              commande.  L'option  -V  fournit une description plus prolixe. Si l'option -V ou -v
              est fournie, l'état final est 0 si la commande a été trouvée et 1 sinon. Si  aucune
              option n'est fournie et si une erreur s'est produite ou si la commande ne peut être
              trouvée, l'état final est 127. Sinon, l'état final de la command interne est l'état
              final de commande.

       compgen [option] [mot]
              Produire  les  correspondances  des  complètements  possibles  pour  mot  selon les
              options, qui peuvent être toute option acceptée par la commande interne complete  à
              l'exception  de  -p  et  -r  et écrit le résultat sur la sortie standard. Lorsqu'on
              utilise les options -F ou -C, les diverses variables de l'interpréteur  créées  par
              les  outils  de  complètement  programmables,  lorsque disponibles, n'auront pas de
              valeurs utilisables.

              Les correspondances seront produites de la  même  façon  que  si  le  programme  de
              complètement   programmable   les   avait  produites  directement  à  partir  d'une
              spécification de complètement avec les mêmes attributs. Si mot est  indiqué,  seuls
              les complètements qui correspondent à mot sont affichés.

              La  valeur  renvoyée  est  vrai,  sauf si une option incorrecte a été fournie ou si
              aucune correspondance n'a été produite.

       complete [-abcdefgjksuv] [-o option-complètement] [-DEI]  [-A  action]  [-G  globpat]  [-W
       liste_de_mots]
              [-F  fonction]  [-C  commande] [-X motif_filtre] [-P préfixe] [-S suffixe] nom [nom
              ...]
       complete -pr [-DEI] [nom ...]
              Indiquer la façon de compléter les arguments de chaque  nom.  Si  l'option  -p  est
              fournie  ou  si  aucune  option  n'est  fournie, les spécifications de complètement
              existantes sont affichées de telle façon qu'elles puissent être  réutilisées  comme
              entrée.  L'option  -r  retire une spécification de complètement à chaque nom fourni
              ou, si aucun nom n'est fourni, toutes les spécifications de complètement.  L'option
              -D  indique  que  les  options  restantes  et  les actions devraient s'appliquer au
              complètement de commande par « défaut », c'est-à-dire le  complètement  essayé  sur
              une  commande  pour  laquelle  aucun  complètement  n'a  été  préalablement défini.
              L'option -E indique que les options restantes et les actions devraient  s'appliquer
              au  complètement  de commande « vide », c'est-à-dire le complètement essayé sur une
              ligne vide. L'option -I indique que les options restantes et les actions  devraient
              s'appliquer  au complètement du premier mot de non affectation de la ligne ou après
              un délimiteur de commande ; ou |, ce qui est habituellement  le  complètement  d'un
              nom de commande. Si plusieurs options sont fournies, l'option -D prend la préséance
              sur -E et les deux prennent la préséance sur -I. Si une des -options -D, -E  ou  -I
              est  fournie,  tous les autres arguments de nom sont ignorés ; ces complètements ne
              s'appliquent qu'au cas précisé par l'option.

              Le  processus  d'application  de  ces  spécifications  de  complètement,  lorsqu'un
              complètement de mot est tenté, est décrit above under Programmable Completion.

              Les  autres  options, si indiquées, ont les significations suivantes. Les arguments
              des options -G, -W et -X (et, si nécessaire, les options -P et -S)  devraient  être
              protégées  pour éviter leur développement avant que la commande interne complete ne
              soit appelée.
              -o option-complètement
                      L'option-complètement  commande  plusieurs  aspects  du  comportement   des
                      spécifications   de   complètement  au-delà  de  la  simple  production  de
                      complètement. option-complètement peut être l'une des suivantes :
                      bashdefault
                              Effectuer le reste des complètements  par  défaut  de  bash  si  la
                              spécification de complètement ne produit aucune correspondance.
                      default Utiliser  le  complètement de nom de fichier par défaut de readline
                              si   la   spécification   de   complètement   ne   produit   aucune
                              correspondance.
                      dirnames
                              Effectuer  le complètement de nom de répertoire si la spécification
                              de complètement ne produit aucune correspondance.
                      filenames
                              Indiquer à readline que la spécification  de  complètement  produit
                              des  noms  de  fichiers,  ainsi  il  peut effectuer tout traitement
                              spécifique aux noms de fichiers (comme ajouter  une  barre  oblique
                              aux  noms  de  répertoires,  protéger  les  caractères  spéciaux ou
                              supprimer les espaces de fin de ligne). Destinée  à  être  utilisée
                              avec les fonctions de l'interpréteur.
                      noquote Indiquer  à  readline de protéger les mots complétés s’il s’agit de
                              noms de fichier (la protection des noms de fichier est par défaut).
                      nosort  Indiquer à readline de ne pas trier par ordre alphabétique la liste
                              des complètements possibles.
                      nospace Indiquer  à readline de ne pas ajouter une espace (comportement par
                              défaut) aux mots complétés en fin de ligne.
                      plusdirs
                              Après création  de  toutes  les  correspondances  définies  par  la
                              spécification de complètement, une tentative de complètement de nom
                              de répertoire est effectuée  et  toutes  les  correspondances  sont
                              ajoutées aux résultats des autres actions.
              -A action
                      L'action  peut  être  l'une  des  suivantes  pour  produire  une  liste des
                      complètements possibles :
                      alias   Noms d'alias. Peut également être indiquée avec -a.
                      arrayvar
                              Noms de variable de type tableau.
                      binding Noms de raccourci clavier readline.
                      builtin Noms de commandes internes de l'interpréteur. Peut  également  être
                              indiquée avec -b.
                      command Noms de commande. Peut également être indiquée avec -c.
                      directory
                              Noms de répertoire. Peut également être indiquée avec -d.
                      disabled
                              Noms de commandes internes de l'interpréteur désactivées.
                      enabled Noms de commandes internes de l'interpréteur activées.
                      export  Noms  de variables de l'interpréteur exportées. Peut également être
                              indiquée avec -e.
                      file    Noms de fichier. Peut également être indiquée avec -f.
                      function
                              Noms de fonctions de l'interpréteur.
                      group   Noms de groupe. Peut également être indiquée avec -g.
                      helptopic
                              Sujets de l'aide acceptés par la commande interne help.
                      hostname
                              Noms de machine tels qu'ils sont extraits du fichier indiqué par la
                              variable de l'interpréteur HOSTFILE.
                      job     Noms  de  tâche si le contrôle des tâches est actif. Peut également
                              être indiquée avec -j.
                      keyword Mots réservés de l'interpréteur. Peut également être indiquée  avec
                              -k.
                      running Noms  de  tâches en cours d'exécution si le contrôle des tâches est
                              actif.
                      service Noms de service. Peut également être indiquée avec -s.
                      setopt  Arguments corrects de l'option -o de la commande interne set.
                      shopt   Noms des options d'interpréteur acceptées par la  commande  interne
                              shopt.
                      signal  Noms de signaux.
                      stopped Noms de tâches suspendues si le contrôle des tâches est actif.
                      user    Noms d'utilisateur. Peut également être indiquée avec -u.
                      variable
                              Noms de toutes les variables de l'interpréteur. Peut également être
                              indiquée avec -v.
              -C commande
                      La commande est exécutée dans un environnement de sous-interpréteur  et  sa
                      sortie  est  utilisée  comme  complètements  possibles.  Les arguments sont
                      fournis comme avec la fonction -F.
              -F fonction
                      La fonction de l'interpréteur  est  exécutée  dans  l'interpréteur  actuel.
                      Lorsqu'une fonction est exécutée, le premier argument ($1) est le nom de la
                      commande dont les arguments doivent être complétés,  le  deuxième  argument
                      ($2)  est  le  mot  à  compléter  et  le troisième argument ($3) est le mot
                      précédant celui devant être complété sur la  ligne  de  commande  actuelle.
                      Lorsqu'elle  finit,  les complètements possibles sont récupérés à partir de
                      la valeur de la variable de type tableau COMPREPLY.
              -G globpat
                      Le motif de développement des chemins globpat est développé  pour  produire
                      les complètements possibles.
              -P préfixe
                      préfixe   est  ajouté  au  début  de  chaque  complètement  possible  après
                      application de toutes les autres options.
              -S suffixe
                      suffixe est ajouté à chaque  complètement  possible  après  application  de
                      toutes les autres options.
              -W liste_de_mots
                      La  liste_de_mots  est  découpée en utilisant les caractères de la variable
                      spéciale IFS comme délimiteurs et chaque mot résultant est  développé.  Les
                      protections  de  l'interpréteur  sont  prises en compte à l'intérieur de la
                      liste_de_mots, afin de fournir un mécanisme  pour  que  les  mots  puissent
                      contenir  des  métacaractères  ou  des caractères de l'interpréteur dans la
                      valeur de IFS. Les complètements possibles sont les éléments  de  la  liste
                      résultante qui correspondent au mot en cours de complètement.
              -X motif_filtre
                      motif_filtre est un motif utilisé pour le développement des chemins. Il est
                      appliqué à la liste des complètements possibles produite par les options et
                      arguments  précédents  et  chaque complètement correspondant à motif_filtre
                      est supprimé de la liste. Un ! au début du motif_filtre inverse le  motif ;
                      dans  ce  cas,  tout  complètement qui ne correspond pas à motif_filtre est
                      supprimé.

              La valeur renvoyée est vrai, sauf si une option incorrecte a été  fournie,  si  une
              option  comme -p ou -r a été fournie sans un nom d'argument, si une tentative a été
              faite pour supprimer une spécification de complètement pour un nom pour  lequel  il
              n'existe  pas de spécification, ou si une erreur est survenue lors de l'ajout d'une
              spécification de complètement.

       compopt [-o option] [-DEI] [+o option] [nom]
              Modifier les options de complètement pour chaque nom en fonction  des  options,  ou
              pour  le  complètement  en  cours  d'exécution si aucun nom n'est fourni. Si aucune
              option n'est donnée, afficher les options de complètement pour chaque nom  ou  pour
              le  complètement  actuel.  Les  valeurs  d’options  possibles  sont celles décrites
              ci-dessus pour la commande interne complete. L'option -D indique  que  les  options
              restantes  devraient  s'appliquer  à  la  commande de complètement par « défaut » ;
              c'est-à-dire  le  complètement  essayé  sur  une  commande  pour   laquelle   aucun
              complètement  n'a  été  préalablement  défini.  L'option -E indique que les options
              fournies devraient s'appliquer au complètement de commande « vide » ;  c'est-à-dire
              le  complètement  essayé  sur  une  ligne  vide. L'option I indique que les options
              fournies restantes devraient s'appliquer au complètement  du  premier  mot  de  non
              affectation  de  la  ligne  ou  après  un délimiteur de commande ; ou |, ce qui est
              habituellement le complètement d'un nom de commande.

              La valeur renvoyée est vrai, à moins qu'une  option  incorrecte  ait  été  fournie,
              qu'une tentative ait été faite pour modifier les options pour un nom pour lequel il
              n'existe pas de spécification de complètement, ou bien qu'une erreur de sortie soit
              survenue.

       continue [n]
              Reprendre  l'exécution  à  l'itération  suivante  d'une boucle for, while, until ou
              encore select.  Si  n  est  indiqué,  reprendre  l'exécution  à  la  n-ième  boucle
              imbriquée.  n  doit  être  ≥ 1. Si n est supérieur au nombre de boucles imbriquées,
              l'exécution reprend à la boucle la plus  externe  (la  boucle  « au  sommet »).  La
              valeur renvoyée est 0, à moins que n ne soit supérieur ou égal à 1.

       declare [-aAfFgiIlnrtux] [-p] [nom[=valeur] ...]
       typeset [-aAfFgiIlnrtux] [-p] [nom[=valeur] ...]
              Déclarer  des  variables ou leur fournir des attributs. Si aucun nom n'est indiqué,
              afficher les valeurs des variables. L'option -p  affichera  les  attributs  et  les
              valeurs  de  chaque  nom. Quand -p est utilisée avec des arguments nom, les options
              supplémentaires, à part -f et -F, sont ignorées. Quand -p est fourni sans  argument
              nom,  les attributs et valeurs de toutes les variables ayant des attributs indiqués
              par les options additionnelles  seront  affichés.  Si  aucune  autre  option  n'est
              fournie avec -p, declare affichera les attributs et valeurs de toutes les variables
              de l'interpréteur. L'option -f limite l'affichage aux fonctions de  l'interpréteur.
              L'option  -F  empêche l'affichage des définitions de fonctions : seuls le nom de la
              fonction et ses attributs sont affichés. Si l'option  d'interpréteur  extdebug  est
              activée  en  utilisant  shopt,  le  nom  du fichier source et le numéro de ligne où
              chaque nom est défini sont aussi affichés. L'option -F  implique  -f.  L'option  -g
              force  la création ou la modification de variables avec une portée globale, même si
              declare est exécutée dans une fonction de l'interpréteur.  Elle  est  ignorée  dans
              tous  les  autres  cas.  L'option  -I  fait  que les variables locales héritent des
              attributs (sauf de l'attribut nameref) et prennent la valeur  de  n'importe  quelle
              variable  existante  du même nom dans son environnement. S'il n'y a pas de variable
              existante, la variable locale est détruite  dans  un  premier  temps.  Les  options
              suivantes  permettent  de  restreindre l'affichage aux variables dotées de certains
              attributs ou de configurer les attributs des variables :
              -a     Chaque nom est une variable de  type  tableau  indicé  (consultez  Tableaux.
                     above).
              -A     Chaque  nom est une variable de type tableau associatif (consultez Tableaux.
                     above).
              -f     Utiliser seulement les noms de fonctions.
              -i     La  variable  est  traitée  comme  un  entier ;  l'évaluation   arithmétique
                     (consultez  ÉVALUATION  ARITHMÉTIQUE  above) est effectuée lorsqu'une valeur
                     est affectée à la variable.
              -l     Quand cette variable contient  une  valeur,  toutes  les  majuscules  seront
                     converties en minuscules. L'attribut majuscule est désactivé.
              -n     Donner à chaque nom l’attribut nameref, le rendant une référence de nom vers
                     une autre variable. Cette autre variable est définie par la valeur  de  nom.
                     Toutes  les  références, les affectations et les modifications d'attribut de
                     nom, à part celles qui utilisent ou modifient l’attribut -n  lui-même,  sont
                     réalisées  sur  la  variable  référencée  par  la  valeur de nom. L’attribut
                     -nameref ne peut pas être appliqué aux variables de type tableau.
              -r     Rendre les noms accessibles en lecture seule. Plus aucune valeur  ne  pourra
                     leur être affectée et ils ne pourront plus être détruits.
              -t     Donner  à  chaque  nom  l'attribut trace. Les fonctions tracées héritent des
                     captures de DEBUG et RETURN de l'interpréteur appelant. L'attribut trace n'a
                     pas de signification spéciale pour les variables.
              -u     Quand  cette  variable  contient  une  valeur,  toutes les minuscules seront
                     converties en majuscules. L'attribut minuscule est désactivé.
              -x     Marquer  les  noms  pour  qu'ils  soit  exportés  dans  l'environnement  des
                     commandes ultérieures.

              En  utilisant  « + »  à  la place de « - », l'attribut correspondant est désactivé,
              excepté que +a et +A ne peuvent  pas  être  utilisés  pour  détruire  une  variable
              tableau  et que +r n'enlèvera pas l'attribut lecture seule. Quand ils sont utilisés
              dans une fonction, declare et typeset rendent  local  chaque  nom,  comme  avec  la
              commande local sauf si l'option -g est fournie. Si un nom de variable est suivi par
              =valeur, la valeur de cette variable est configurée à valeur. Lors de l’utilisation
              de  -a  ou  -A  et de la syntaxe d’affectation composée pour créer des variables de
              type tableau, les attributs supplémentaires sont sans effet jusqu’aux  affectations
              suivantes.  La valeur renvoyée est 0, sauf si une option incorrecte est rencontrée,
              une tentative est faite de définir une fonction en utilisant  ``-f  foo=bar'',  une
              tentative  est  faite  pour affecter la valeur à une variable en lecture seule, une
              tentative est faite d'affecter une valeur à une variable tableau sans  employer  la
              syntaxe d'affectation composée (consultez Tableaux above), un des noms n'est pas un
              nom correct pour une  variable  de  l'interpréteur,  une  tentative  est  faite  de
              supprimer  l'attribut  lecture seule d'une variable en lecture seule, une tentative
              est faite de supprimer l'attribut tableau d'une variable tableau ou  une  tentative
              est faite avec -f d'afficher une fonction inexistante.

       dirs [-clpv] [+n] [-n]
              Sans  option, afficher la liste des répertoires actuellement mémorisés. L'affichage
              par défaut est réalisé sur une seule ligne, les noms de répertoires  étant  séparés
              par  des espaces. Les répertoires sont ajoutés à la liste avec la commande pushd et
              supprimés avec la commande popd. Le répertoire  courant  est  toujours  le  premier
              répertoire de la pile.
              -c     Effacer la liste des répertoires en les supprimant tous.
              -l     Produire une liste en utilisant les chemins complets ; le format d'affichage
                     par défaut utilise le tilde pour représenter le répertoire d'accueil.
              -p     Afficher la pile des répertoires avec un élément par ligne.
              -v     Afficher la pile des répertoires avec un élément  par  ligne,  en  préfixant
                     chaque entrée avec son numéro d'indice dans la pile.
              +n     Afficher  le n-ième élément de la liste fournie par dirs, lorsqu'appelé sans
                     options, en comptant à partir de la gauche en commençant à zéro.
              -n     Afficher le n-ième élément de la liste fournie par dirs, lorsqu'appelé  sans
                     options, en comptant à partir de la droite en commençant à zéro.

              La  valeur  renvoyée  est  0,  sauf  si  une  option incorrecte a été fournie ou si
              l'indice n dépasse la longueur de la pile des répertoires.

       disown [-ar] [-h] [tâche ... | pid ... ]
              Sans options, supprimer chaque tâche de la table  des  tâches  actives.  Si  aucune
              tâche  n'est  précisée  et  qu’aucune  des options -a ou -r n'est fournie, la tâche
              actuelle est utilisée. Si l'option -h est indiquée, aucune tâche n'est supprimée de
              la  table,  mais chaque tâche est marquée pour que le signal SIGHUP ne lui soit pas
              envoyé si l'interpréteur reçoit un signal SIGHUP. Si aucune  tâche  n'est  fournie,
              l'option  -a signifie la suppression ou le marquage de toutes les tâches ; l'option
              -r sans l'argument tâche restreint les opérations aux tâches en cours  d'exécution.
              La valeur renvoyée est 0, sauf si tâche n'indique pas une tâche correcte.

       echo [-neE] [arguments ...]
              Afficher  les  arguments,  séparés par des espaces, suivis par un saut de ligne. La
              valeur renvoyée est 0 sauf en cas d’erreur. Si -n est  indiqué,  le  changement  de
              ligne  final  est  supprimé.  Si  l'option  -e  est  indiquée, l'interprétation des
              caractères de protection suivants par une contre-oblique est activée.  L'option  -E
              désactive  l'interprétation  de ces caractères de protection, même sur les systèmes
              où ils sont interprétés par défaut.  L'option  d'interpréteur  xpg_echo  peut  être
              utilisée  dynamiquement  pour  déterminer  si  echo développe ou non par défaut ces
              caractères de protection. echo n'interprète pas --  comme  signifiant  la  fin  des
              options. echo reconnaît les suites de caractères de protection suivants :
              \a     alerte (alarme) ;
              \b     effacement arrière (« backspace ») ;
              \c     supprime tout affichage suivant ;
              \e
              \E     caractère de protection ;
              \f     saut de page (« form feed ») ;
              \n     saut de ligne (« new line ») ;
              \r     retour chariot (« carriage return ») ;
              \t     tabulation horizontale ;
              \v     tabulation verticale ;
              \\     contre-oblique ;
              \0nnn  le  caractère  8 bits dont la valeur en octal est nnn (zéro à trois chiffres
                     octaux) ;
              \xHH   le caractère 8 bits dont la valeur hexadécimale est HH (un ou deux  chiffres
                     hexadécimaux) ;
              \uHHHH le  caractère  Unicode  (ISO/IEC 10646) dont la valeur hexadécimale est HHHH
                     (un à quatre chiffres hexadécimaux) ;
              \UHHHHHHHH
                     le  caractère  Unicode  (ISO/IEC 10646)  dont  la  valeur  hexadécimale  est
                     HHHHHHHH (un à huit chiffres hexadécimaux) ;

       enable [-a] [-dnps] [-f fichier] [nom ...]
              Activer  ou  désactiver  les  commandes  internes de l'interpréteur. Désactiver une
              commande interne permet d'exécuter une commande disque ayant  le  même  nom  qu'une
              commande  interne  de  l'interpréteur,  sans  avoir  à  indiquer  un chemin d'accès
              complet, même quand l'interpréteur recherche  normalement  les  commandes  internes
              avant les commandes du disque. Si -n est utilisé, chaque nom indiqué est désactivé,
              sinon ils sont activés. Par exemple, pour utiliser le programme binaire test qui se
              trouve  dans  PATH  plutôt  que  la  commande interne, utilisez ``enable -n test''.
              L'option -f demande de charger la nouvelle commande interne  avec  le  nom  indiqué
              depuis  le fichier objet partagé sur les systèmes qui le permettent. bash utilisera
              la valeur de la variable  BASH_LOADABLES_PATH  comme  une  liste  séparée  par  des
              deux-points  dans  laquelle  rechercher  le fichier. La valeur par défaut dépend du
              système. L'option -d permet de supprimer une commande interne chargée  précédemment
              avec  -f.  Si  aucun  argument nom n'est indiqué ou si l'option -p est fournie, une
              liste des commandes internes de l'interpréteur est affichée. Sans autre option,  la
              liste  est  celle  des  commandes  internes  actives  de  l'interpréteur. Si -n est
              fournie, seules les commandes désactivées sont affichées. Si  -a  est  fournie,  la
              liste  de toutes les commandes est affichée, avec une indication des activations et
              désactivations. Si -s est fournie, la sortie est  limitée  aux  commandes  internes
              spéciales  POSIX.  Si  aucune option n'est fournie et si nom n'est pas une commande
              interne de l'interpréteur, enable tentera  de  charger  nom  à  partir  d'un  objet
              partagé  nommé  nom  comme  si  la commande était ``enable -f name name . La valeur
              renvoyée est 0 à moins que nom ne soit pas une commande interne  de  l'interpréteur
              ou  qu'il y ait une erreur au chargement d'une nouvelle commande interne d'un objet
              partagé.

       eval [arguments ...]
              Les arguments sont lus et regroupés en une seule commande  simple.  Cette  commande
              est  alors  lue  et exécutée par l'interpréteur et son état final est renvoyé comme
              valeur de la commande eval. S'il n'y a pas d'arguments ou uniquement des  arguments
              NULL, eval renvoie 0.

       exec [-cl] [-a nom] [commande [arguments]]
              Si une commande est indiquée, elle remplace l'interpréteur. Aucun nouveau processus
              n'est créé. Les arguments deviennent ceux  de  la  commande.  Si  l'option  -l  est
              fournie,  l'interpréteur  place  un tiret en guise de zéroième argument fourni à la
              commande. C'est ce que fait login(1). L'option  -c  conduit  à  l'exécution  de  la
              commande  avec  un  environnement  vide. Si l'option -a est fournie, l'interpréteur
              transmet le nom comme zéroième argument. Si la commande ne peut être exécutée  pour
              une  raison quelconque, un interpréteur non interactif termine, sauf si l'option de
              l'interpréteur execfail est activée. Dans ce  cas,  une  erreur  est  renvoyée.  Un
              interpréteur  interactif renvoie une erreur si le fichier ne peut pas être exécuté.
              Un sous-interpréteur termine sans conditions si exec  échoue.  Si  aucune  commande
              n'est   indiquée,   les   éventuelles   redirections   sont  mises  en  place  dans
              l'interpréteur actuel et l'état renvoyé est 0. S'il y a une erreur de  redirection,
              l'état renvoyé est 1.

       exit [n]
              Termine  l'interpréteur avec un état de n. Si n est omis, l'état final est celui de
              la dernière commande  exécutée.  Une  capture  sur  EXIT  est  exécutée  avant  que
              l'interpréteur ne se termine.

       export [-fn] [nom[=mot]] ...
       export -p
              Les   noms   fournis   sont   marqués   pour  être  exportés  automatiquement  dans
              l'environnement des commandes exécutées par la suite. Si l'option -f est  indiquée,
              les  noms se rapportent à des fonctions. Si aucun nom n'est donné ou si l'option -p
              est fournie, une liste de noms de toutes  les  variables  exportées  est  affichée.
              L'option  -n  conduit  à supprimer l'attribut d'exportation de toutes les variables
              nommées. Si un nom de variable est suivi par =mot, la valeur  de  la  variable  est
              configurée  à mot. export renvoie un état final de 0, sauf si une option incorrecte
              est  rencontrée,  si  un  des  noms  n'est  pas  un  nom  correct  de  variable  de
              l'interpréteur,  ou  si  l'option  -f  est  fournie  avec  un nom qui n'est pas une
              fonction.

       fc [-e éditeur] [-lnr] [première] [dernière]
       fc -s [motif=nouveau] [commande]
              La première forme sélectionne un intervalle  de  commandes  de  la  première  à  la
              dernière  dans la file d’historique et l’affiche ou l’édite pour les réexécuter. La
              première et la dernière peuvent être indiquées sous forme de chaînes (pour  trouver
              la  dernière  commande  commençant  par  cette  chaîne) ou sous forme numérique (un
              indice dans la file d'historique où un nombre négatif est  utilisé  comme  décalage
              par  rapport  au numéro de la commande actuelle). Sur la liste, une première ou une
              dernière de valeur 0 est équivalente à -1, et  -0  est  équivalent  à  la  commande
              actuelle  (habituellement  la commande fc) ; autrement, 0 est équivalent à -1 et -0
              n'est pas valable. Si la dernière n'est pas indiquée,  elle  est  configurée  à  la
              commande  actuelle  si l'on veut afficher la liste (ainsi ``fc -l -10'' affiche les
              10 dernières commandes) et à l'identique de la première sinon. Si la première n'est
              pas  indiquée,  elle  est  configurée  à la commande précédente pour une édition et
              à -16 pour l'affichage de liste.

              L'option -n supprime l'affichage des numéros dans la  liste.  L'option  -r  inverse
              l'ordre  des  commandes.  Si l'option -l est indiquée, les commandes sont affichées
              sur la sortie standard.  Sinon,  l'éditeur  indiqué  est  appelé  avec  un  fichier
              contenant  les  commandes sélectionnées. Si aucun éditeur n'est indiqué, on utilise
              la valeur de la variable FCEDIT et la valeur de EDITOR si FCEDIT n'existe  pas.  Si
              aucune  variable  n'existe,  vi  est  utilisé.  Lorsque  l'édition  se termine, les
              commandes sont affichées puis exécutées.

              Dans la seconde forme, la commande  est  réexécutée  après  avoir  remplacé  chaque
              instance  du  motif  par  nouveau.  commande  est  interprétée de la même façon que
              première ci-dessus. Un alias utile pour cela est ``r="fc -s"'', ainsi en tapant ``r
              cc''  on  relance  la dernière commande commençant par ``cc'' et en tapant ``r'' on
              réexécute la commande précédente.

              Lorsque la première forme est utilisée, la valeur  renvoyée  est  0,  sauf  si  une
              option  incorrecte  est  trouvée  ou  si  première ou dernière indiquent des lignes
              d'historique hors d'atteinte. Si l'option -e est fournie, la  valeur  renvoyée  est
              celle  de  la  dernière  commande exécutée ou un échec si une erreur s'est produite
              avec le fichier temporaire des commandes. Avec la seconde forme, l'état renvoyé est
              celui  de la commande réexécutée, sauf si commande n'indique pas une ligne correcte
              de l'historique, auquel cas fc renvoie un échec.

       fg [tâche]
              Reprendre la tâche au premier plan qui devient la tâche actuelle. Si  aucune  tâche
              n'est  précisée,  l'interpréteur  utilise  la  notion  de tâche actuelle. La valeur
              renvoyée est celle de la commande placée au premier plan ou un échec si le contrôle
              des tâches est désactivé ou, lorsque le contrôle des tâches est activé, si la tâche
              n'indique pas une tâche correcte ou si la  tâche  indique  une  tâche  lancée  sans
              contrôle des tâches.

       getopts chaîne_d_options nom [arguments ...]
              getopts  est  utilisé  par  les scripts d'interpréteur pour analyser les paramètres
              positionnels. La chaîne_d_options contient l'ensemble des  caractères  d'options  à
              reconnaître ;  si  un  caractère  est suivi par un deux-points, l'option est censée
              avoir un argument, qui devrait en  être  séparé  par  une  espace.  Les  caractères
              deux-points  et  le  point  d'interrogation  ne  peuvent  pas  être  utilisés comme
              caractères d'option. À chaque  appel,  getopts  place  l'option  suivante  dans  la
              variable  de  l'interpréteur  dont le nom est fourni, en la créant si elle n'existe
              pas et l'indice de l'argument suivant à traiter dans la variable OPTIND. OPTIND est
              initialisée  à  1 à chaque appel d'un interpréteur ou d'un script. Quand une option
              nécessite un  argument,  getopts  place  cet  argument  dans  la  variable  OPTARG.
              L'interpréteur  ne  réinitialise  pas  OPTIND  automatiquement,  il  faut  le faire
              manuellement  entre  des  appels  multiples  à  getopts  au  sein  du  même   appel
              d'interpréteur si un nouveau jeu de paramètres doit être utilisé.

              Lorsque  la  fin des options est atteinte, getopts termine avec une valeur renvoyée
              strictement supérieure à zéro. OPTIND est positionné à l'indice du premier argument
              obligatoire et un point d'interrogation (?) est placé dans la variable nom.

              getopts  analyse  en principe les paramètres positionnels, mais si plus d'arguments
              sont indiqués comme valeur d'arguments, getopts analysera ces derniers à la place.

              getopts peut signaler des erreurs de deux façons. Si le  premier  caractère  de  la
              chaîne_d_options   est   un  deux-points,  les  erreurs  sont  signalées  de  façon
              silencieuse. Lors d'un fonctionnement  normal,  des  messages  de  diagnostic  sont
              affichés  si  une  option est incorrecte ou s'il manque un argument d'option. Si la
              variable OPTERR est configurée à 0, aucun message d'erreur ne sera affiché, même si
              le premier caractère de la chaîne_d_options n'est pas un deux-points.

              Si une option incorrecte est rencontrée, getopts place un point d'interrogation (?)
              dans la variable  nom,  affiche  un  message  d'erreur  (s'il  n'est  pas  en  mode
              silencieux)   et  détruit  la  variable  OPTARG.  Si  getopts  fonctionne  en  mode
              silencieux, le caractère d'option  est  placé  dans  OPTARG  et  aucun  message  de
              diagnostic n'est affiché.

              Lorsqu'un  argument  d'option  nécessaire  est  absent  et  si  getopts  n'est  pas
              silencieux, un point d'interrogation (?) est placé dans la variable nom, OPTARG est
              détruite  et  un  message  de diagnostic est affiché. Si getopts est silencieux, un
              deux-points (:) est placé dans la variable nom et OPTARG est positionné à  l'option
              monocaractère trouvée.

              getopts  renvoie  vrai si une option, indiquée ou non, est trouvée. Il renvoie faux
              si la fin des options est atteinte ou si une erreur se produit.

       hash [-lr] [-p fichier] [-dt] [nom]
              Chaque fois que hash est invoquée, le chemin d'accès complet de la commande nom est
              déterminé  en  examinant  les  répertoires  de $PATH, et mémorisé. Tous les chemins
              précédemment mémorisés sont supprimés. Si l'option -p est fournie, aucune recherche
              de  chemin  d'accès  n'est effectuée et le fichier est utilisé comme chemin d'accès
              complet pour la commande. L'option -r conduit l'interpréteur  à  oublier  tous  les
              emplacements  mémorisés.  L'option  -d  conduit  l'interpréteur  à oublier tous les
              emplacements mémorisés de chaque nom. Si l'option -t est fournie, le chemin d'accès
              complet  de  chaque  nom correspondant est affiché. Si plusieurs arguments nom sont
              fournis avec -t, le nom est affiché avant chaque chemin  d'accès  complet  associé.
              L'option  -l conduit à afficher la sortie dans un format réutilisable en entrée. Si
              aucun argument n'est indiqué ou si seulement -l est fournie, des  informations  sur
              les  commandes  mémorisées sont affichées. La valeur renvoyée est vrai, sauf si nom
              n'est pas trouvé ou si une option incorrecte est fournie.

       help [-dms] [motif]
              Afficher des informations d'aide au sujet des commandes internes. Si un  motif  est
              indiqué,  help  fournit de l'aide sur toutes les commandes internes correspondant à
              ce motif, sinon, une liste des commandes internes et des structures de contrôle  de
              l'interpréteur est affichée.
              -d     Afficher une courte description de chaque motif.
              -m     Afficher  la  description  de  chaque  motif dans un format du type pages de
                     manuel.
              -s     Afficher seulement un court synopsis d'utilisation de chaque motif.

              L'état renvoyé est 0, sauf si aucune commande ne correspond au motif.

       history [n]
       history -c
       history -d nombre
       history -d début-fin
       history -anrw [fichier]
       history -p argument [argument ...]
       history -s argument [argument ...]
              Sans options, afficher la liste des commandes de la  file  d'historique,  avec  les
              numéros  de  ligne.  Les lignes marquées avec un * ont été modifiées. Un argument n
              permet de n'afficher que les n dernières lignes. Si la variable  de  l'interpréteur
              HISTTIMEFORMAT  existe  et n'est pas NULL, elle est utilisée comme chaîne de format
              pour  strftime(3)  afin  d'afficher  l'horodatage  associé  à  chaque  élément   de
              l'historique.  Aucun  blanc  ne  sépare l'horodatage ainsi mis en forme de la ligne
              d'historique. Si un argument fichier est  fourni,  il  est  utilisé  comme  nom  de
              fichier  d'historique ;  sinon  la valeur de HISTFILE est utilisée. Les options, si
              fournies, ont les significations suivantes :
              -c     Effacer la file de l'historique en supprimant tous les éléments.
              -d nombre
                     Supprimer l'entrée d'historique à la position nombre. Si nombre  estnégatif,
                     il  est  interprété  comme  relatif  à  un nombre plus grand que celui de la
                     dernière position de l'historique, ainsi les  indices  négatifs  comptent  à
                     rebours  depuis  la  fin de l'historique et un indice -1 fait référence à la
                     commande history -d actuelle.
              -d début-fin
                     Supprimer la plage d'entrées d'historique entre les positions début  et  fin
                     incluses.  Les  valeurs  positives  et  négatives  pour  début  et  fin sont
                     interprétées comme décrites ci-dessus.
              -a     Ajouter les « nouvelles » lignes d'historique. Ce sont celles créées  depuis
                     le  début  de  la  session  actuelle de bash, mais pas déjà ajoutées dans le
                     fichier d'historique.
              -n     Lire dans le fichier d'historique les lignes non encore lues et les  ajouter
                     à  la  file d'historique actuelle. Il s'agit des lignes qui ont été ajoutées
                     dans le fichier d'historique depuis le début de la session bash.
              -r     Lire le contenu du fichier et l'ajouter à l’historique actuel.
              -w     Écrire la liste actuelle  d’historique  dans  le  fichier  d’historique,  en
                     écrasant le contenu précédent.
              -p     Effectuer  la  substitution  d'historique  sur  les  arguments  suivants  et
                     afficher le résultat sur la sortie standard. Ne pas mémoriser les  résultats
                     dans la file d'historique. Chaque argument doit être protégé pour désactiver
                     le développement normal de l'historique.
              -s     Conserver les arguments dans la file d'historique comme un  unique  élément.
                     La  dernière  commande  de  la file d'historique est supprimée avant que les
                     arguments ne soient ajoutés.

              Si la variable HISTTIMEFORMAT existe, les  informations  d'horodatage  associées  à
              chaque  élément de l'historique sont écrites dans le fichier d'historique, repérées
              par le caractère de commentaire d'historique. Quand le fichier d'historique est lu,
              les   lignes   commençant  par  le  caractère  de  commentaire  d'historique  suivi
              immédiatement par un chiffre sont considérés comme  des  horodatages  de  la  ligne
              d'historique  précédente.  La  valeur renvoyée est 0, sauf si une option incorrecte
              est fournie, si une erreur se produit durant la lecture ou l'écriture  du  fichier,
              si  une  plageou  un  nombre  incorrects  sont fournis comme argument à -d ou si le
              développement de l'historique fourni en argument à -p échoue.

       jobs [-lnprs] [ tâche ... ]
       jobs -x commande [ arguments ... ]
              La première forme affiche  la  liste  des  tâches  actives.  Les  options  ont  les
              significations suivantes :
              -l     Afficher les PID, en plus des informations normales.
              -n     Afficher  uniquement  des  informations  sur les tâches dont l'état a changé
                     depuis la dernière notification de leur état à l'utilisateur.
              -p     Afficher uniquement le PID du meneur du groupe de processus de la tâche.
              -r     N’afficher que les tâches en cours d'exécution.
              -s     N’afficher que les tâches suspendues.

              Si une tâche est indiquée, l'affichage est restreint aux informations  relatives  à
              cette  tâche. L'état renvoyé est 0, sauf si une option incorrecte est rencontrée ou
              si une tâche incorrecte est fournie.

              Si l'option -x est fournie, jobs remplace toute tâche trouvée dans la  commande  ou
              dans  ses  arguments  avec  les  Process Group ID correspondant, puis il exécute la
              commande en lui transmettant les arguments et en renvoyant son état final.

       kill [-s signal | -n num-signal | -signal] [pid | tâche] ...
       kill -l|-L [signal | état_final]
              Envoyer le signal indiqué par signal ou num-signal aux processus indiqués  par  pid
              ou  par  tâche.  signal  est  soit sous la forme de nom de signal (indifférent à la
              casse), comme SIGKILL (avec ou sans le préfixe SIG), soit  sous  forme  numérique ;
              num-signal  est  un numéro de signal. Si signal est absent, SIGTERM est supposé par
              défaut. Un argument -l provoque l'affichage de la liste des noms de signaux. Si des
              arguments sont fournis quand -l est indiqué, les noms des signaux correspondant aux
              arguments sont affichés et l'état renvoyé est 0. L'argument état_final de  l'option
              -l  est  un  nombre  indiquant  soit  un  numéro  de signal, soit l'état final d'un
              processus terminé par un signal. L'option -L est équivalente de  -l.  kill  renvoie
              vrai  si  au  moins  un signal a été envoyé avec succès ou faux si une erreur s'est
              produite ou si une option incorrecte a été rencontrée.

       let argument [argument ...]
              Chaque argument est une expression arithmétique  à  évaluer  (consultez  ÉVALUATION
              ARITHMÉTIQUE  above).  Si l'évaluation du dernier argument donne 0, let renvoie 1 ;
              sinon 0 est renvoyé.

       local [option] [nom[=valeur] ...] - ]
              Pour chaque argument, une variable locale nom  est  créée  et  la  valeur  lui  est
              affectée.  L'option  peut  être n'importe quelle option acceptée par declare. Quand
              local est utilisé dans une fonction, la variable nom  possède  une  portée  visible
              restreinte  à  cette  fonction  et  ses  enfants.  Si  nom  est  -,  les options de
              l'interpréteur sont réglées à locales pour la  fonction  dans  laquelle  local  est
              invoquée :  les  options  de  l'interpréteur,  modifiées  en  utilisant la commande
              interne set dans la fonction, sont restaurées à  leur  valeur  originale  quand  la
              fonction  redonne  la  main.  La  restauration  est effectuée comme si une série de
              commandes set avaient été exécutées pour restaurer les valeurs qui étaient en place
              avant la fonction. Sans opérandes, local affiche la liste des variables locales sur
              la sortie standard. Une utilisation de local hors des  fonctions  est  erronée.  La
              valeur  renvoyée  est  0,  sauf si local est utilisé hors d'une fonction, si un nom
              incorrect est fourni ou si nom est une variable en lecture seule.

       logout Terminer un interpréteur de connexion.

       mapfile [-d délimiteur] [-n nombre] [-O origine] [-s nombre] [-t] [-u df] [-C rappel]  [-c
       quantum] [tableau]
       readarray  [-d  délimiteur]  [-n nombre] [-O origine] [-s nombre] [-t] [-u df] [-C rappel]
       [-c quantum] [tableau]
              Lire les lignes depuis l'entrée standard dans la variable de  type  tableau  indicé
              tableau,  ou  depuis  le  descripteur  de fichier df si l'option -u est fournie. La
              variable MAPFILE est le tableau par défaut.  Les  options,  si  fournies,  ont  les
              significations suivantes :
              -d     Le  premier  caractère  de  délimiteur est utilisé pour terminer la ligne de
                     saisie, plutôt qu'un changement de ligne. Si délimiteur est une chaîne vide,
                     mapfile termine une ligne quand il lit un caractère NUL.
              -n     Copier  au  plus  nombre  lignes.  Si  nombre  est 0, toutes les lignes sont
                     copiées.
              -O     Commencer l'affectation de tableau à l'indice origine. L'indice  par  défaut
                     est 0.
              -s     Supprimer les nombre premières lignes lues.
              -t     Éliminer  un  délimiteur  final  (par défaut changement de ligne ) de chaque
                     ligne lue.
              -u     Lire les lignes à partir du descripteur de  fichier  df  plutôt  que  depuis
                     l'entrée standard.
              -C     Évaluer  rappel  à  chaque  fois  que  quantum lignes sont lues. L'option -c
                     précise le quantum.
              -c     Préciser le nombre de lignes entre chaque appel à rappel.

              Si -C est précisé sans -c, le quantum par défaut est 5000. Quand rappel est évalué,
              l'indice  du  prochain  élément  de tableau à affecter et la ligne à affecter à cet
              élément sont fournis en arguments  supplémentaires.  rappel  est  évalué  après  la
              lecture de la ligne, mais avant l'affectation de l'élément de tableau.

              Si  aucune  origine  explicite n'est fournie, mapfile effacera tableau avant de lui
              affecter des valeurs.

              mapfile termine avec succès sauf si une option ou un de  ses  arguments  n'est  pas
              valable,  ou  si  tableau  n'est pas valable, n'est pas un tableau indicé ou si son
              affectation est impossible.

       popd [-n] [+n] [-n]
              Enlever des éléments de la pile des répertoires.  Les  éléments  sont  numérotés  à
              partir  de 0 avec le premier répertoire listé par dirs. Sans argument popd supprime
              le répertoire du sommet de la pile et un cd est effectué en  direction  du  nouveau
              répertoire au sommet. Les arguments, si fournis, ont les significations suivantes :
              -n     Empêcher  le  changement  normal  de  répertoire lors de la suppression d'un
                     répertoire de la pile. Seule la pile est manipulée.
              +n     Supprimer de la pile le n-ième élément de la liste  affichée  par  dirs,  en
                     comptant depuis la gauche à partir de zéro. Par exemple : ``popd +0'' enlève
                     le premier répertoire, ``popd +1'' le second.
              -n     Supprimer le n-ième élément de la  liste  affichée  par  dirs,  en  comptant
                     depuis  la  droite  à  partir de zéro. Par exemple : ``popd -0'' supprime le
                     dernier répertoire et ``popd -1'' l'avant-dernier.

              Si l'élément au sommet de la pile de répertoires est modifié et si l'option n n'est
              pas fournie, popd utilise la commande interne cd pour changer vers le répertoire au
              sommet de la pile. Si cd échoue, popd renvoie une valeur différente de zéro.

              Autrement, popd renvoie faux si une option incorrecte est trouvée, si  la  pile  de
              répertoires est vide ou si une pile de répertoires absente est indiquée.

              Si  la  commande popd réussit, bash effectue un dirs pour afficher le contenu final
              de la pile de répertoires et l'état renvoyé est 0.

       printf [-v var] format [arguments]
              Écrire les arguments mis en forme sur  la  sortie  standard  sous  le  contrôle  du
              format.  L'option  -v  conduit à affecter la sortie à la variable var plutôt que de
              l'afficher sur la sortie standard.

              Ce format est une  chaîne  de  caractères  contenant  trois  types  d'objets :  les
              caractères  normaux,  qui  sont  simplement  copiés  sur  la  sortie  standard, les
              caractères de protection qui sont convertis puis copiés sur la sortie  standard  et
              les  spécifications  de  format,  qui conduisent chacun à l'affichage des arguments
              successifs. En plus des spécifications de  format  standard  de  printf(1),  printf
              interprète les extensions suivantes :
              %b     conduit  printf  à  développer  les  suites de caractères de protection dans
                     l'argument correspondant de la même manière que echo -e.
              %q     conduit  printf  à  afficher  l'argument  correspondant   dans   un   format
                     réutilisable en entrée de l'interpréteur ;
              %Q     comme  %q,  mais  applique  toute précision fournie à l'argument avant de le
                     protéger.
              %(formatdate)T
                     conduit printf à afficher la chaîne date-heure résultant de l'utilisation de
                     formatdate  en  tant  que  chaîne  de  format  pour  strftime(3). L'argument
                     correspondant est un entier représentant le temps en seconde  écoulé  depuis
                     epoch.  Deux  valeurs  particulières  d'argument peuvent être utilisées : -1
                     représente l'heure actuelle et -2 l'heure à laquelle  l'interpréteur  a  été
                     invoqué. Si aucun argument n’est indiqué, la conversion se comporte comme si
                     -1 avait été fourni. C’est une exception au comportement habituel de printf.

              Les directives %b, %q et %T  utilisent  toutes  les  arguments  de  largeur  et  de
              précision  de  champ  à  partir  de  la  spécification de format et écrivent autant
              d'octets que l'argument développé (ou utilisent autant d'espace  qu'un  champ  pour
              cet argument) qui contient habituellement plus de caractères que l'original.

              Les arguments des spécificateurs de format qui ne sont pas des chaînes sont traités
              comme des constantes C, sauf qu'un signe plus ou moins est permis au début, et que,
              si  le premier caractère est un guillemet simple ou double, la valeur est la valeur
              ASCII du caractère suivant.

              Le format est réutilisé si nécessaire pour  englober  tous  les  arguments.  Si  le
              format  demande plus d'arguments que fournis, les spécifications supplémentaires se
              comportent comme si une valeur zéro ou une chaîne NULL, suivant le besoin,  avaient
              été  fournies.  La valeur renvoyée est zéro en cas de succès, différente de zéro en
              cas d'échec.

       pushd [-n] [+n] [-n]
       pushd [-n] [rép]
              Ajouter un répertoire au sommet  de  la  pile  des  répertoires  ou  effectuer  une
              rotation  dans  la pile, en ramenant le répertoire actuel au sommet. Sans argument,
              la commande pushd échange les deux éléments au sommet de la pile  des  répertoires.
              Les arguments, si fournis, ont les significations suivantes :
              -n     Empêcher  le  changement  normal  de  répertoire lors d'une rotation ou d'un
                     ajout de répertoires dans la pile. Ainsi, seule la pile est manipulée.
              +n     Effectuer une rotation dans la pile, de façon à amener au sommet  le  n-ième
                     répertoire  (de  la  liste affichée par dirs, en comptant depuis la gauche à
                     partir de zéro).
              -n     Effectuer une rotation dans la pile, de façon à amener au sommet  le  n-ième
                     répertoire  (de  la  liste affichée par dirs, en comptant depuis la gauche à
                     partir de zéro).
              rép    Ajouter répertoire au sommet de la pile des répertoires

              Après que la pile a été modifiée, si l'option -n n'a pas été fournie, pushd utilise
              la  commande interne cd pour changer vers le répertoire au sommet de la pile. Si cd
              échoue, pushd renvoie une valeur différente de zéro.

              Autrement, si aucun argument n'est fourni, pushd renvoie 0  sauf  si  la  pile  des
              répertoires est vide. Lors d'une rotation de la pile des répertoires, pushd renvoie
              0 sauf si la pile est vide ou si un élément inexistant dans la pile est indiqué.

              Si la commande pushd réussit, bash effectue un dirs pour montrer le  contenu  final
              de la pile du répertoire.

       pwd [-LP]
              Afficher  le  chemin  d'accès  absolu au répertoire de travail actuel. Le chemin ne
              contiendra pas de liens symboliques si l'option -P est fournie, ou si  l'option  -o
              physical  de  la  commande interne set est activée. Si l'option -L est utilisée, le
              chemin affiché peut contenir des liens symboliques. L'état renvoyé est 0,  sauf  si
              une  erreur s'est produite lors de la lecture du nom du répertoire actuel ou si une
              option incorrecte est fournie.

       read [-ers] [-a tableau] [-d délimiteur] [-i texte] [-n nb_car] [-N  nb_car]  [-p  invite]
       [-t délai] [-u df] [nom ...]
              Une ligne est lue depuis l'entrée standard ou à partir du descripteur de fichier df
              fourni en argument à  l'option  -u,  découpée  en  mots  comme  décrit  above  dans
              Découpage  en  mots, puis le premier mot de cette ligne est affecté au premier nom,
              le second mot au second nom, et ainsi de suite. S'il y a plus de mots que de  noms,
              les  mots restants et leurs séparateurs intercalaires sont affectés au dernier nom.
              S'il y a moins de mots lus dans le flux d'entrée  que  de  variables,  des  valeurs
              vides  sont  affectées à celles restantes. Les caractères contenus dans la variable
              IFS sont utilisés pour découper la ligne en mots en utilisant les mêmes règles  que
              celles  utilisées  par  l’interpréteur  pour  le développement (décrites above dans
              Découpage en mots). Le caractère  contre-oblique  (\)  permet  de  supprimer  toute
              signification  spéciale  pour  le  caractère suivant et autorise la continuation de
              ligne. Les options, si fournies, ont les significations suivantes :
              -a tableau
                     Les mots sont affectés aux indices successifs d'une variable tableau de  nom
                     tableau,  en  commençant  à  0.  tableau  est détruit avant que de nouvelles
                     valeurs ne soient affectées. Les autres arguments nom sont ignorés.
              -d délimiteur
                     Le premier caractère de délimiteur est utilisé pour  terminer  la  ligne  de
                     saisie,  plutôt qu'un changement de ligne. Si délimiteur est la chaîne vide,
                     read termine une ligne quand il lit un caractère NUL.
              -e     Si l'entrée  standard  provient  d'un  terminal,  la  bibliothèque  readline
                     (consultez  READLINE  above)  est  utilisée  pour obtenir la ligne. Readline
                     utilise les configurations d'édition en cours (ou par défaut,  si  l'édition
                     de  ligne n'était pas préalablement active), mais utilise le complètement de
                     nom de fichier par défaut de readline.
              -i texte
                     Si readline est utilisée pour lire la ligne, texte est placé dans le  tampon
                     d'édition avant le début de l'édition.
              -n nb_car
                     read  s'arrête  après  avoir  lu nb_car caractères plutôt que d'attendre une
                     ligne complète en entrée, mais un délimiteur est respecté si moins de nb_car
                     caractères ont été lus avant le délimiteur.
              -N nb_car
                     read  s'arrête  après  avoir  lu  exactement  nb_car  caractères  plutôt que
                     d'attendre une ligne complète en entrée, sauf si une fin  de  fichier  (EOF)
                     est  rencontrée  ou  si  read  dépasse son délai de réponse. Les délimiteurs
                     rencontrés en entrée ne sont pas traités spécialement et n'entraînent pas la
                     fin  de  read  avant  que nb_car caractères n'aient été lus. Le résultat pas
                     découpé selon les caractères dans IFS ; le but  est  que  la  variable  soit
                     exactement  des  caractères lus (à l'exception du caractère contre-oblique ;
                     consultez ci-dessous l'option -r).
              -p invite
                     Afficher invite sur la sortie d'erreur standard,  sans  caractère  final  de
                     changement de ligne, avant d'essayer de lire toute nouvelle saisie. L'invite
                     est affichée seulement si l'entrée vient d'un terminal.
              -r     La  contre-oblique  n'agit  pas  comme  un  caractère  de   protection.   La
                     contre-oblique   est  considérée  comme  faisant  partie  de  la  ligne.  En
                     particulier, une contre-oblique suivie d'un changement de ligne ne peut  pas
                     être considérée comme une continuation de ligne.
              -s     Mode silencieux. Si une entrée arrive à partir d'un terminal, les caractères
                     ne sont pas affichés.
              -t attente
                     Conduire read à expirer et renvoyer un échec si une ligne complète en entrée
                     (ou  un  nombre  indiqué  de  caractères)  n'a  pas été lue dans le délai en
                     seconde. délai est un nombre décimal avec éventuellement des chiffres  après
                     la  virgule  (NdT : point en l'occurrence). Cette option n'est effective que
                     si read lit l'entrée à partir d'un terminal, d'un tube, ou depuis  un  autre
                     fichier  spécial ;  elle  n'a  aucun  effet  lors de la lecture d'un fichier
                     normal. Si read expire, read sauvegarde toute entrée partielle lue  dans  la
                     variable nom indiquée. Si délai est nul, read se termine immédiatement, sans
                     essayer de lire des données. L’état de  sortie  est  0  si  une  entrée  est
                     disponible  pour  le  descripteur de fichier indiqué, ou la lecture renverra
                     EOF, non nulle sinon. L'état final est supérieur  à  128  si  le  délai  est
                     dépassé.
              -u df  Lire l'entrée à partir du descripteur de fichier df.

              Si  aucun nom n'est fourni, la ligne lue, sans autre modification que le retrait du
              délimiteur de fin, est affectée à la variable REPLY. Le code renvoyé est zéro, sauf
              si  une  fin  de fichier (EOF) est rencontrée, si read dépasse son délai de réponse
              (auquel cas le code renvoyé est plus grand que 128), en cas d’erreur  d’affectation
              (comme  une  affectation  de  variable  à  une  variable en lecture seule) ou si un
              descripteur de fichier incorrect est fourni en argument de -u.

       readonly [-aAf] [-p] [nom[=mot] ...]
              Les noms indiqués reçoivent un attribut lecture seule ; les valeurs de ces noms  ne
              pourront  plus  être modifiées par des affectations ultérieures. Si l'option -f est
              fournie, les fonctions correspondant à  ces  noms  sont  marquées  en  conséquence.
              L'option  -a  restreint  l'action  aux  variables  tableaux  indicés ;  l'option -A
              restreint l'action aux variables tableaux associatifs. Si  les  deux  options  sont
              fournies, -A est prioritaire. Si aucun argument nom n'est indiqué ou si l'option -p
              est fournie, une liste de tous les noms en lecture seule est affichée.  Les  autres
              options  peuvent  être utilisées pour restreindre l'affichage à un sous-ensemble de
              l'ensemble des noms en lecture seule. L'option -p conduit à afficher la sortie dans
              un  format  susceptible  d'être  réutilisé  en entrée. Si le nom d'une variable est
              suivi par =mot, la variable est configurée à mot. L'état renvoyé est 0, sauf si une
              option  incorrecte  a  été rencontrée, si l'un des noms n'est pas un nom correct de
              variable de l'interpréteur ou si l'option -f est fournie avec un nom qui n'est  pas
              une fonction.

       return [n]
              Forcer  une fonction à arrêter son exécution et à renvoyer la valeur indiquée par n
              dans son contexte d'appel. Si n est omis, la valeur de retour renvoyée est celle de
              la  dernière  commande exécutée dans le corps de la fonction. Si return est exécuté
              par un gestionnaire de capture,  la  dernière  commande  utilisée  pour  déterminer
              l'état  est  la  dernière  commande  exécutée  avant le gestionnaire de capture. Si
              return est exécutée durant une capture de DEBUG, la dernière commande utilisée pour
              déterminer  l'état est la dernière commande exécutée par le gestionnaire de capture
              avant que return soit invoquée. Si return est utilisée hors  d'une  fonction,  mais
              pendant  l'exécution d'un script par la commande . (source), elle conduit à l'arrêt
              de l'exécution du script par l'interpréteur et renvoie comme état final  du  script
              soit n, soit l'état final de la dernière commande exécutée dans le script. Si n est
              fourni, la valeur de retour est ses 8 bits de poids faible. La valeur de retour est
              non nulle si un argument non numérique est fourni à return, ou si elle est utilisée
              hors d'une fonction ou pas lors de l'exécution d'un script par . ou  source.  Toute
              commande  associée  à  la  capture  de  RETURN  est  exécutée  avant  la reprise de
              l'exécution après la fonction ou le script.

       set [-abefhkmnptuvxBCEHPT] [-o nom_d_option] [--] [-] [argument ...]
       set [+abefhkmnptuvxBCEHPT] [+o nom_d_option] [--] [-] [argument ...]
              Sans  options,  afficher  le  nom  et  la  valeur  de  toutes  les   variables   de
              l'interpréteur  dans un format susceptible d'être réutilisé en entrée pour créer ou
              réinitialiser les variables actuelles. Les variables en lecture  seule  ne  peuvent
              pas être réinitialisées. En mode POSIX, seules les variables de l'interpréteur sont
              affichées. La sortie est triée en fonction des paramètres  linguistiques  régionaux
              actuels.  Lorsque  des  options  sont  indiquées,  elles  créent  ou détruisent des
              attributs de l'interpréteur.  Tous  les  arguments  restant  après  traitement  des
              options  sont considérés comme des valeurs pour les paramètres positionnels et sont
              affectés, dans l'ordre, à : $1, $2, ... $n. Les  options,  si  indiquées,  ont  les
              significations suivantes :
              -a      Donner  l'attribut export aux variables et fonctions créées ou modifiées et
                      les  marquer  pour  qu'elles  soient  exportées  dans  l'environnement  des
                      commandes exécutées ultérieurement.
              -b      Signaler  l'état des tâches terminées en arrière-plan immédiatement, plutôt
                      que d'attendre l'affichage de la prochaine invite de base.  N'est  effectif
                      que si le contrôle des tâches est activé.
              -e      Se terminer immédiatement si un pipeline (qui peut être réduit à une unique
                      commande simple), une liste ou une commande composée  (consultez  GRAMMAIRE
                      DE  L'INTERPRÉTEUR  above),  se  termine  avec  un  état différent de zéro.
                      L'interpréteur ne se termine pas si la  commande  qui  échoue  fait  partie
                      d'une  liste de commandes suivant immédiatement un mot clef while ou until,
                      d'un test suivant les mots réservés if ou  elif,  d'une  commande  exécutée
                      dans  une liste && ou || sauf si la commande est située après le dernier &&
                      ou ||, d'une commande de pipeline à l'exception de la dernière,  ou  si  la
                      valeur  renvoyée  par  la  commande  est  inversée  par  !. Si une commande
                      composée autre qu’un sous-interpréteur renvoie un état non nul parce qu’une
                      commande  échoue  alors  que  -e était ignoré, l’interpréteur ne se termine
                      pas.  Une  capture  sur  ERR,  si  existante,  est   exécutée   avant   que
                      l'interpréteur  ne se termine. Cette option s'applique à l'environnement de
                      l'interpréteur  ainsi  qu'à  l'environnement  de  chaque  sous-interpréteur
                      individuellement (consultez ENVIRONNEMENT D'EXÉCUTION DES COMMANDES above),
                      et peut conduire des sous-interpréteurs  à  se  terminer  avant  d'y  avoir
                      exécuté toutes les commandes.

                      Si une commande composée ou une fonction de l’interpréteur s’exécutent dans
                      un contexte où -e est ignoré,  aucune  des  commandes  exécutées  dans  une
                      commande  composée  ou  dans  un  corps de fonction ne sera affectée par le
                      réglage -e, même si -e est  défini  et  qu’une  commande  renvoie  un  état
                      d’échec.  Si  une  commande  composée  ou  une  fonction  de l’interpréteur
                      définissent -e pendant son exécution dans un contexte où -e est ignoré,  ce
                      réglage  n’aura  aucun  effet avant la fin de la commande composée ou de la
                      commande contenant l’appel de fonction.
              -f      Désactiver le développement des chemins.
              -h      Mémoriser l'emplacement des commandes lors de leur exécution.  Activée  par
                      défaut.
              -k      Tous   les   arguments  sous  la  forme  d'affectations  sont  placés  dans
                      l'environnement d'une commande, et non pas seulement ceux qui précèdent  le
                      nom de la commande.
              -m      Mode  supervision.  Le  contrôle  des  tâches  est activé. Cette option est
                      activée par défaut pour les interpréteurs interactifs sur les systèmes  qui
                      le  permettent  (consultez  CONTRÔLE  DES TÂCHES above). Tous les processus
                      sont exécutés dans un groupe  de  processus  séparé.  Quand  une  tâche  en
                      arrière-plan  se  termine,  l’interpréteur  affiche une ligne contenant son
                      état final.
              -n      Lecture de commandes sans exécution. Cela peut être utilisé pour rechercher
                      les  erreurs  de  syntaxe  dans un script. Cette option est ignorée par les
                      interpréteurs interactifs.
              -o nom_d_option
                      Le nom_d_option est l'un des suivants :
                      allexport
                              Identique à -a.
                      braceexpand
                              Identique à -B.
                      emacs   Utiliser une interface d'édition des  lignes  de  commande  « à  la
                              Emacs ».   C'est   le   comportement   activé   par   défaut  quand
                              l'interpréteur est interactif, sauf si l'interpréteur  est  démarré
                              avec  l'option --noediting. L'interface d'édition utilisée par read
                              -e est modifiée également.
                      errexit Identique à -e.
                      errtrace
                              Identique à -E.
                      functrace
                              Identique à -T.
                      hashall Identique à -h.
                      histexpand
                              Identique à -H.
                      history Activer  l'historique  des  commandes,  comme  décrit  above   dans
                              HISTORY. Cette option est activée par défaut dans les interpréteurs
                              interactifs.
                      ignoreeof
                              Identique   à   l'exécution   de   la    commande    d'interpréteur
                              ``IGNOREEOF=10''   a   été   exécutée   (consultez   Variables   de
                              l'interpréteur above).
                      keyword Identique à -k.
                      monitor Identique à -m.
                      noclobber
                              Identique à -C.
                      noexec  Identique à -n.
                      noglob  Identique à -f.
                      nolog   Actuellement ignorée.
                      notify  Identique à -b.
                      nounset Identique à -u.
                      onecmd  Identique à -t.
                      physical
                              Identique à -P.
                      pipefail
                              Si existante, la valeur renvoyée par un pipeline est la  valeur  de
                              la  dernière  commande  (la  plus à droite) à terminer avec un état
                              final différent de zéro ou zéro si toutes les commandes du pipeline
                              terminent avec succès. Désactivée par défaut.
                      posix   Aligner  le  comportement  de bash sur la norme (mode POSIX), en ce
                              qui concerne les options dont l'action par  défaut  diffère  de  la
                              norme  POSIX.  La  section VOIR AUSSI below ci-dessous référence un
                              document  précisant  la  façon  dont  le  mode  POSIX  affecte   le
                              comportement de bash.
                      privileged
                              Identique à -p.
                      verbose Identique à -v.
                      vi      Utiliser  une  interface  d'édition  des  lignes de commande « à la
                              vi ». L'interface d'édition  utilisée  par  read  -e  est  modifiée
                              également.
                      xtrace  Identique à -x.
                      Si -o est fournie sans nom_d_option, les valeurs actuelles des options sont
                      affichées. Si +o est fournie sans nom_d_option, la série de  commandes  set
                      permettant  de recréer la configuration actuelle d'options est affichée sur
                      la sortie standard.
              -p      Basculer en mode privilégié. Dans ce mode, les fichiers $ENV  et  $BASH_ENV
                      ne  sont  pas traités, les fonctions de l'interpréteur ne sont pas héritées
                      de l'environnement,  et  les  variables  SHELLOPTS,  BASHOPTS,  CDPATH,  et
                      GLOBIGNORE,   si   présentes   dans   l'environnement,  sont  ignorées.  Si
                      l'interpréteur démarre avec un UID  (ou  respectivement  un  GID)  effectif
                      différent  de  son  UID  (GID) réel et si l'option -p n'est pas fournie, ce
                      comportement est appliqué et l'UID (GID) effectif est  positionné  à  l'UID
                      (GID)  réel.  Si l'option -p est fournie au démarrage, l'UID (GID) effectif
                      n'est pas modifié. Désactiver cette option conduit à la  configuration  des
                      UID et GID effectifs à la valeur des UID et GID réels.
              -r      Activer  le  mode interpréteur restreint. Cette option ne peut être annulée
                      une fois qu'elle a été définie.'
              -t      Terminer après lecture et exécution d'une commande.
              -u      Considérer les variables inexistantes  et  les  paramètres  différents  des
                      paramètres spéciaux « @ » et « * », ou les variables tableau indicées par @
                      ou *, comme des  erreurs  lors  du  développement  des  paramètres.  Si  un
                      développement   de   variable   inexistante  ou  de  paramètre  est  tenté,
                      l'interpréteur affiche un message d'erreur et, s'il n'est  pas  interactif,
                      termine avec un état différent de zéro.
              -v      Afficher les lignes en entrée de l'interpréteur lorsqu'elles sont lues.
              -x      Après  le  développement  de chaque commande simple, commande for, commande
                      case, commande select ou commande  for  arithmétique,  afficher  la  valeur
                      développée  de PS4, suivie de la commande et ses arguments développés ou la
                      liste de mots associés.
              -B      L'interpréteur  effectue  le   développement   des   accolades   (consultez
                      Développement des accolades above). Activée par défaut.
              -C      Si  configurée, bash n'écrasera pas un fichier existant avec les opérateurs
                      >, >& et <>. Ce comportement peut être surpassé lors de  la  création  d'un
                      fichier  de sortie en utilisant l'opérateur de redirection >| à la place de
                      >.
              -E      Si configurée,  toute  capture  sur  ERR  est  héritée  par  les  fonctions
                      d'interpréteur,  les  substitutions de commandes et les commandes exécutées
                      dans un sous-interpréteur. La capture de ERR n'est normalement pas  héritée
                      dans de tels cas.
              -H      Activer  le style ! de substitution d'historique. C'est le comportement par
                      défaut lorsque l'interpréteur est interactif.
              -P      Si configurée, l'interpréteur  ne  résout  pas  les  liens  symboliques  en
                      exécutant des commandes comme cd qui modifient le répertoire de travail. Il
                      utilise à la place le répertoire physique. Par défaut bash suit  la  chaîne
                      logique  des  répertoires  lors  des  commandes qui modifient le répertoire
                      actuel.
              -T      Si configurée, toutes les captures de DEBUG et RETURN sont héritées par les
                      fonctions de l'interpréteur, les substitutions de commande et les commandes
                      exécutées dans un sous-interpréteur. Les captures de  DEBUG  et  RETURN  ne
                      sont normalement pas héritées dans de tels cas.
              --      Si  aucun  argument ne suit cette option, alors les paramètres positionnels
                      sont détruits. Sinon,  les  paramètres  positionnels  sont  configurés  aux
                      arguments, même si certains d'entre eux commencent par un -.
              -       Marquer la fin des options, tous les arguments restants sont alors affectés
                      aux paramètres positionnels. Les options -x et -v  sont  désactivées.  S'il
                      n'y a pas d'arguments, les paramètres positionnels ne sont pas modifiés.

              Par  défaut  les attributs sont désactivés, sauf indication contraire. En utilisant
              « + » à la place de « - »,  les  options  sont  désactivées.  Les  options  peuvent
              également  être  fournies  en  argument  lors  de l'appel de l'interpréteur. Le jeu
              actuel des options peut être trouvé dans $-. La valeur renvoyée est toujours  vrai,
              sauf si une option incorrecte est rencontrée.

       shift [n]
              Les  paramètres  positionnels  à  partir  de  n+1  ... sont renommés en $1 .... Les
              paramètres représentés par les nombres $# jusqu'à $#-n+1 sont détruits. n doit être
              un  entier  positif  inférieur  ou  égal  à  $#. Si n vaut 0, aucun paramètre n'est
              modifié. Si n est omis, on suppose qu'il vaut 1. Si  n  est  supérieur  à  $#,  les
              paramètres  positionnels  ne  sont  pas  modifiés.  L'état  renvoyé est strictement
              positif si n est supérieur à $# ou strictement négatif, sinon 0 est renvoyé.

       shopt [-pqsu] [-o] [nom_opt ...]
              Basculer la valeur des réglages contrôlant le comportement de gestion  des  options
              de  l'interpréteur.  Les  réglages  peuvent  soit  être  ceux  ci-dessous, soit, si
              l’option -o est utilisée, ceux disponibles avec l’option -o de la commande  interne
              set. Sans option ou avec l'option -p, une liste de toutes les options configurables
              est affichée, avec l'indication de l'état de chacune d'entre elles ; si des nom_opt
              sont  fournis,  la  sortie  est  limitée  à  ces  options. L'option -p conduit à un
              affichage de la sortie sous une forme susceptible d'être réutilisée en entrée.  Les
              autres options ont les significations suivantes :
              -s     Activer (créer) chaque nom_opt.
              -u     Désactiver (détruire) chaque nom_opt.
              -q     Supprimer  la  sortie  normale (mode silencieux) ; l'état renvoyé indique si
                     nom_opt est existante ou non. Si plusieurs arguments nom_opt  sont  indiqués
                     avec  -q,  l'état  renvoyé  est  zéro  si  tous  les  nom_opt sont activés ;
                     différent de zéro sinon.
              -o     Restreindre les valeurs de nom_opt à celles définies pour l'option -o de  la
                     commande interne set.

              Si   l'option   -s  ou  -u  est  utilisée  sans  argument  nom_opt,  shopt  affiche
              respectivement les options existantes ou non existantes. Sauf indication contraire,
              les options shopt sont désactivées (détruites) par défaut.

              L'état  renvoyé  lors  d'un affichage des options est zéro si tous les nom_opt sont
              activés, différent de zéro  sinon.  Lors  de  la  création  ou  de  la  destruction
              d'options,  l'état  renvoyé  est  zéro,  à moins que nom_opt ne soit pas une option
              correcte d'interpréteur.

              La liste des options shopt est :

              assoc_expand_once
                      Si existante, l'interpréteur supprime les évaluation multiples des  indices
                      de  tableaux  associatifs pendant l'évaluation d'expressions arithmétiques,
                      lors  de  l'exécution  de  commandes  internes  qui  peuvent  affecter  des
                      variables  et  lors  de  l'exécution de commandes internes qui réalisent un
                      déréférencement de tableau.
              autocd  Si existante, un nom de commande qui est le nom d'un répertoire est exécuté
                      comme  s'il  était l'argument de la commande interne cd. Cette option n'est
                      utilisée que par les interpréteurs interactifs.
              cdable_vars
                      Si existante, un argument de la  commande  interne  cd  qui  n'est  pas  un
                      répertoire  est  supposé  être  un  nom  de  variable dont la valeur est le
                      répertoire visé.
              cdspell Si existante, les erreurs minimes de frappe dans un composant du répertoire
                      en  argument de la commande cd seront corrigées. Les erreurs corrigées sont
                      les inversions d'un caractère, un caractère manquant  et  un  caractère  en
                      trop.  Si  une  correction  est  possible, le nom de répertoire corrigé est
                      affiché et la commande est exécuté. Cette option n'est utilisée que par les
                      interpréteurs interactifs.
              checkhash
                      Si existante, bash vérifie si une commande trouvée dans la table de hachage
                      existe avant d'essayer de l'exécuter. Si une commande hachée n'existe plus,
                      une recherche normale de chemin est effectuée.
              checkjobs
                      Si existante, bash affiche la liste des états de toutes les tâches en cours
                      et arrêtées avant de terminer un interpréteur  interactif.  Si  des  tâches
                      sont  en  cours,  la  sortie est différée jusqu'à ce qu'une nouvelle sortie
                      soit tentée sans commande  intermédiaire  (consultez  CONTRÔLE  DES  TÂCHES
                      above).  L'interpréteur  repousse  toujours  la  sortie  si des tâches sont
                      arrêtées.
              checkwinsize
                      Si existante, bash vérifie la taille de la fenêtre  après  chaque  commande
                      externe  et,  au  besoin,  met  à  jour  les valeurs des variables LINES et
                      COLUMNS.
              cmdhist Si existante, bash essaie  de  sauvegarder  les  commandes  s'étendant  sur
                      plusieurs  lignes  en un seul élément d'historique. Cela facilite l'édition
                      ultérieure de commandes multilignes. Cette option est activée  par  défaut,
                      mais  n'a  un  effet  que  si  l'historique des commandes est activé, comme
                      décrit above dans HISTORY.
              compat31
              compat32
              compat40
              compat41
              compat42
              compat43
              compat44
              compat50
                      Ces  directives  contrôlent  les  aspects  du  mode  de  compatibilité   de
                      l'interpréteur (consultez MODE DE COMPATIBILITÉ DE L'INTERPRÉTEUR below).

              complete_fullquote
                      Si  existante,  bash protège tous les métacaractères de l’interpréteur dans
                      les noms  de  fichier  et  de  répertoire  lors  du  complètement.  Si  non
                      existante,  bash supprime les métacaractères comme les signes dollar du jeu
                      de caractères qui sera protégé dans les noms de  fichiers  complétés  quand
                      ces   métacaractères   apparaissent   dans   des   références  de  variable
                      d’interpréteur dans des mots à compléter.  Cela  signifie  que  les  signes
                      dollar  dans  les  noms  de  variables qui se développent en répertoires ne
                      seront pas protégés ; cependant, tous les signes dollar  apparaissant  dans
                      les  noms de fichier ne seront pas protégés non plus. Ce n’est actif que si
                      bash  utilise  des  contre-obliques  pour  protéger  des  noms  de  fichier
                      complétés.   Cette   variable  est  définie  par  défaut,  ce  qui  est  le
                      comportement de bash par défaut jusqu’à la version 4.2.

              direxpand
                      Si existante, bash remplace les noms de répertoire  par  les  résultats  de
                      développement  de  mots  lors  du  complètement  des  noms de fichier. Cela
                      modifie le contenu du tampon d'édition de readline. Sinon, bash  essaye  de
                      conserver ce que l'utilisateur a tapé.

              dirspell
                      Si existante, bash essaie de corriger les erreurs de frappe sur les noms de
                      répertoire lors du complètement de mot si le nom de répertoire initialement
                      fourni n'existe pas.

              dotglob Si existante, bash inclut les noms de fichiers commençant par un « . » dans
                      les résultats des développements de chemins. Les noms de fichier  « . »  et
                      « .. »   doivent   toujours   être  toujours  être  mis  en  correspondance
                      explicitement, même si dotglob existe.

              execfail
                      Si existante, un interpréteur non interactif ne terminera pas s'il ne  peut
                      exécuter  un  fichier  indiqué  en argument de la commande interne exec. Un
                      interpréteur interactif ne termine pas si exec échoue.

              expand_aliases
                      Si existante, les alias sont développés  comme  décrit  above  dans  ALIAS.
                      Cette option est activée par défaut pour les interpréteurs interactifs.

              extdebug
                      Si  elle existe à l'appel de l'interpréteur ou dans un fichier de lancement
                      de l'interpréteur, prend  les  dispositions  pour  que  le  paramétrage  du
                      traçage soit exécuté avant que l'interpréteur démarre, identique à l'option
                      --debugger. Si elle est posée après l'appel,  le  comportement  prévu  pour
                      l'utilisation du traçage est activé :

                      1.     L'option -F de la commande interne declare affiche le nom du fichier
                             source et le numéro de ligne correspondant à chaque nom de  fonction
                             fourni comme argument.

                      2.     Si  la  commande  lancée  par la capture de DEBUG renvoie une valeur
                             différente de zéro, la commande suivante est  sautée  et  n'est  pas
                             exécutée.

                      3.     Si la commande lancée par la capture de DEBUG renvoie la valeur 2 et
                             si l'interpréteur s'exécute dans un sous-programme (une fonction  de
                             l'interpréteur  ou un script exécuté par les commandes internes . ou
                             source), l'interpréteur simule un appel à return.

                      4.     BASH_ARGC et BASH_ARGV sont mises à jour comme expliqué  dans  leurs
                             descriptions. above).

                      5.     Le  traçage  des fonctions est activé : la substitution de commande,
                             les fonctions de l'interpréteur et  les  sous-interpréteurs  appelés
                             avec ( command ) héritent des captures de DEBUG et RETURN.

                      6.     Le  traçage  d'erreur  est activé : la substitution de commande, les
                             fonctions de l'interpréteur et les sous-interpréteurs appelés avec (
                             command ) héritent de la capture de ERR.

              extglob Si  existante,  les  fonctionnalités  étendues  de  mise  en correspondance
                      décrites above dans Développement des chemins sont activées.

              extquote
                      Si existante, la protection par $'chaîne'  et  $"chaîne"  est  effectuée  à
                      l'intérieur  des  développements de ${paramètres} entre guillemets doubles.
                      Cette option est activée par défaut.

              failglob
                      Si existante, les motifs qui échouent à  faire  correspondre  les  noms  de
                      fichiers  pendant le développement des chemins font qu'ils provoqueront une
                      erreur de développement.

              force_fignore
                      Si existante, les suffixes  indiqués  par  la  variable  de  l'interpréteur
                      FIGNORE  conduiront  des  mots  à être ignorés lors du complètement de mot,
                      même si les mots ignorés sont les seuls complètements possibles.  Consultez
                      VARIABLES  DE  L'INTERPRÉTEUR  above pour une description de FIGNORE. Cette
                      option est activée par défaut.

              globasciiranges
                      Si existante, les expressions d’intervalle utilisées  dans  les  motifs  de
                      correspondance  des expressions entre crochets (consultez Motifs génériques
                      above) se comportent comme avec les paramètres régionaux traditionnels de C
                      lors   des  comparaisons.  Cela  signifie  que  l’ordre  de  collation  des
                      paramètres régionaux actuels n’est pas pris en compte, donc b ne  sera  pas
                      ordonné  entre  A  et  B, et les caractères ASCII en majuscule et minuscule
                      seront fusionnés.

              globskipdots
                      Si  existante,  le  développement  des  chemins  ne  sera  jamais  mis   en
                      correspondance  avec  les noms de fichier « . » et « .. », même si le motif
                      débute par un « . ». Cette option est activée par défaut.

              globstar
                      Si existante, le motif ** utilisé dans un  contexte  de  développement  des
                      chemins  correspondra  à tous les fichiers et zéro ou plusieurs répertoires
                      et sous-répertoires. Si le motif est suivi de /, seuls les  répertoires  et
                      sous-répertoires correspondent.

              gnu_errfmt
                      Si existante, les messages d'erreur de l'interpréteur seront écrits dans le
                      format standard GNU des messages d'erreurs.

              histappend
                      Si existante, la file d'historique est ajoutée au fichier  désigné  par  la
                      valeur  de  la variable HISTFILE lorsque l'interpréteur termine, plutôt que
                      d'écraser ce fichier.

              histreedit
                      Si existante et si readline est utilisée, un utilisateur peut rééditer  une
                      substitution d'historique qui a échoué.

              histverify
                      Si  existante  et  si readline est utilisée, le résultat de la substitution
                      d'historique  n'est  pas   transmise   immédiatement   à   l'analyseur   de
                      l'interpréteur.  À la place, la ligne résultante est chargée dans le tampon
                      d'édition de readline, permettant des modifications ultérieures.

              hostcomplete
                      Si existante et si readline est  utilisée,  bash  essayera  d'effectuer  le
                      complètement  des  noms  de machines lorsqu'un mot contient un @ (consultez
                      Complètement dans READLINE above). Cette option est activée par défaut.

              huponexit
                      Si existante, bash enverra un signal SIGHUP à toutes les  tâches  lorsqu'un
                      interpréteur de connexion interactif termine.

              inherit_errexit
                      Si  existante,  la substitution de commande hérite de la valeur de l'option
                      errexit,   plutôt   que   de   la   détruire   dans   l'environnement    du
                      sous-interpréteur. Cette option est activée quand le mode POSIX est activé.

              interactive_comments
                      Si existante, un mot commençant par un # conduira ce mot et tous les autres
                      caractères restants de  la  ligne  à  être  ignorés  dans  un  interpréteur
                      interactif  (consultez  COMMENTAIRES  above).  Cette option est activée par
                      défaut.

              lastpipe
                      Si  existante,  et  que  le  contrôle  des   tâches   n'est   pas   activé,
                      l'interpréteur  exécute  la dernière commande d'un pipeline non exécutée en
                      arrière-plan dans l'environnement d'interpréteur actuel.

              lithist Si existante et si l'option cmdhist est activée, les commandes  multilignes
                      sont   sauvegardées   dans  l'historique  avec  des  changements  de  ligne
                      incorporés comme séparateurs plutôt que des  points-virgules  là  où  c'est
                      possible.

              localvar_inherit
                      Si  existante, les variables locales héritent de la valeur et des attributs
                      d'une variable du même nom qui existe  avec  une  portée  antérieure  avant
                      qu'une nouvelle valeur soit assignée. L'attribut -nameref n'est pas hérité.

              localvar_unset
                      Si  existante,  appeler unset sur des variables locales dans des portées de
                      fonction antérieures  les  marque  de  telle  manière  que  des  recherches
                      ultérieures  les  trouve  désactivées  jusqu'à  ce  la fonction renvoie. Ce
                      comportement est le même que de détruire  les  variables  locales  avec  la
                      portée de la fonction actuelle.

              login_shell
                      L'interpréteur  crée  cette option s'il est démarré en tant qu'interpréteur
                      de connexion (consultez APPEL above). La valeur ne peut être modifiée.

              mailwarn
                      Si existante et s'il a été accédé à un fichier que bash surveille pour  les
                      courriers  depuis  sa  dernière vérification, le message « Le courrier dans
                      fichier_de_courrier a été lu. » est affiché.

              no_empty_cmd_completion
                      Si existante et si readline est utilisée, bash n'essaiera pas d'utiliser le
                      PATH  pour  de  possibles complètements quand le complètement est tenté sur
                      une ligne vide.

              nocaseglob
                      Si existante, bash fait correspondre  les  noms  de  fichiers  d'une  façon
                      insensible  à  la  casse  lors  du  développement  des  chemins  (consultez
                      Développement des chemins above).

              nocasematch
                      Si existante, bash fait correspondre les motifs d'une façon insensible à la
                      casse  lors  de la mise en correspondance pendant l'exécution des commandes
                      conditionnelles case ou [[, lorsqu'il procède à des développements de motif
                      de  substitution  de mot ou qu'il filtre des complètement possibles dans le
                      cadre d'un complètement programmable.

              noexpand_translation
                      Si existante, bash entoure les résultats de la traduction de la  protection
                      de  $"..."  par des guillemets simples au lieu de guillemets doubles. Si la
                      chaîne n'est pas traduite, cela n'a aucun effet.

              nullglob
                      Si existante, bash autorise les motifs ne  correspondant  à  aucun  fichier
                      (consultez  Développement  des chemins above) à se développer en une chaîne
                      NULL plutôt qu'en une valeur littérale.

              patsub_replacement
                      Si existante, bash développe  les  occurrences  de  &  dans  la  chaîne  de
                      remplacement   de   la   substitution   de  motif  vers  le  texte  mis  en
                      correspondance par le motif, comme décrit dans Développement des paramètres
                      above. Cette option est activée par défaut.

              progcomp
                      Si   existante,   les   outils  de  complètement  programmables  (consultez
                      Complètement programmable above) sont activés. Cette option est activée par
                      défaut.

              progcomp_alias
                      Si  existante et si le complètement programmable est activé, bash traite un
                      nom de commande qui n'a pas de complètement  comme  un  possible  alias  et
                      tente  un  développement  d'alias.  S'il  possède  un  alias, bash tente un
                      complètement programmable en utilisant le  nom  de  commande  résultant  du
                      développement d'alias.

              promptvars
                      Si  existante,  les  chaînes  d'invite  sont  sujettes au développement des
                      paramètres, à la substitution de commande, au développement arithmétique et
                      à  la  suppression des protections après avoir été développées comme décrit
                      dans INVITES. above. Cette option est activée par défaut.

              restricted_shell
                      L'interpréteur définit cet option s'il démarre en mode restreint (consultez
                      INTERPRÉTEUR  RESTREINT below). Cette valeur ne peut pas être changée. Elle
                      n'est  pas  réinitialisée  lorsque  les  fichiers   d’initialisation   sont
                      exécutés,  ce qui permet à ces fichiers de découvrir si un interpréteur est
                      restreint ou non.

              shift_verbose
                      Si existante, la commande interne shift affiche un message d'erreur lorsque
                      le nombre de décalages dépasse le nombre de paramètres positionnels.

              sourcepath
                      Si  existante,  la  commande  interne  source  (.)  utilise la valeur de la
                      variable PATH pour trouver le répertoire contenant  le  fichier  fourni  en
                      argument. Cette option est activée par défaut.

              varredir_close
                      Si  existante,  l'interpréteur  ferme  automatiquement  les descripteurs de
                      fichier affectés en utilisant la syntaxe de  redirection  {nom_de_variable}
                      (consultez  REDIRECTION  above)  au  lieu  de  les laisser ouverts quand la
                      commande se termine.

              xpg_echo
                      Si existante, la commande interne echo développe par défaut les  suites  de
                      caractères de protection par contre-oblique.

       suspend [-f]
              Suspendre  l'exécution  de l'interpréteur jusqu'à la réception d'un signal SIGCONT.
              Un interpréteur de connexion, ou un interpréteur dont le contrôle des tâches  n'est
              pas  activé,  ne  peut  pas  être  suspendu ;  l'option  -f  permet de surpasser ce
              comportement et force sa suspension. L'état renvoyé est 0, sauf  si  l'interpréteur
              est  un interpréteur de connexion, ou si le contrôle des tâches n'est pas activé et
              que l'option -f est absente.

       test expr
       [ expr ]
              Renvoyer un état 0 (vrai) ou 1 (faux) suivant l'évaluation de  la  condition  expr.
              Chaque  opérateur  et  opérande  doit être représenté par un argument distinct. Les
              expressions sont composées des primitives  décrites  above  dans  CONDITIONS.  test
              n'accepte  aucune  option,  n'accepte pas non plus et ignore un argument de -- pour
              signifier la fin des options.

              Les conditions peuvent être combinées avec  les  opérateurs  suivant,  décrits  par
              ordre  de  priorité  décroissante.  L'évaluation dépend du nombre d'arguments, voir
              ci-dessous. La priorité des opérateurs est utilisée quand il  y  a  au  moins  cinq
              arguments.
              ! expr Vrai si expr est fausse.
              ( expr )
                     Renvoie  la  valeur de expr. Peut servir à surpasser la priorité normale des
                     opérateurs.
              expr1 -a expr2
                     Vrai si expr1 et expr2 sont toutes deux vraies.
              expr1 -o expr2
                     Vrai si expr1 ou expr2 est vraie.

              test et [ évaluent les conditions en fonction  d'un  jeu  de  règles  dépendant  du
              nombre d'arguments.

              0 argument
                     La condition est fausse.
              1 argument
                     La condition est vraie si et seulement si l'argument n'est pas NULL.
              2 arguments
                     Si  le  premier argument est !, la condition est vraie si et seulement si le
                     second argument est NULL. Si le premier argument  est  l'un  des  opérateurs
                     conditionnels  unaires  décrits above dans CONDITIONS la condition est vraie
                     si le test unaire est vrai. Si le premier argument n'est  pas  un  opérateur
                     conditionnel unaire correct, la condition est fausse.
              3 arguments
                     Les  conditions  suivantes  sont  appliquées dans l'ordre de la liste. Si le
                     second argument est l'un des opérateurs conditionnels binaires décrits above
                     dans CONDITIONS, le résultat de la condition est le résultat du test binaire
                     utilisant le premier et le troisième  argument  en  tant  qu'opérandes.  Les
                     opérateurs -a et -o sont considérés comme des opérateurs binaires quand il y
                     a trois arguments. Si le premier argument est !, la valeur est  la  négation
                     du test binaire utilisant les deuxième et troisième arguments. Si le premier
                     argument est exactement ( et le troisième  argument  est  exactement  ),  le
                     résultat  est  le  test  unaire  du  second argument. Sinon la condition est
                     fausse.
              4 arguments
                     Les conditions suivantes sont appliquées dans l'ordre de  la  liste.  Si  le
                     premier argument est !, le résultat est la négation de l'expression ternaire
                     composée des arguments restants, le test binaire utilisant les  deuxième  et
                     troisième arguments. Si le premier argument est exactement ( et le quatrième
                     argument est exactement ), le résultat est le test binaire des  deuxième  et
                     troisième  arguments.  Sinon la condition est analysée et évaluée suivant la
                     priorité utilisant les règles listées ci-dessus.
              5 arguments ou plus
                     La condition est analysée et évaluée selon les règles de  priorité  décrites
                     ci-dessus.

              Lorsqu'ils sont utilisés avec test ou [, les opérateurs < et > ordonnent d'un point
              de vue lexicographique en utilisant l'ordre ASCII.

       times  Afficher les durées cumulées utilisateur et  système  pour  l'interpréteur  et  les
              processus lancés par cet interpréteur. L'état renvoyé est 0.

       trap [-lp] [[argument] signal ...]
              La commande argument doit être lue et exécutée quand l'interpréteur reçoit au moins
              un signal. Si argument est absent (et qu'un seul signal est fourni)  ou  -,  chaque
              signal indiqué est réinitialisé à sa position d'origine (la valeur qu'il avait lors
              de l'entrée dans l'interpréteur). Si argument est la  chaîne  NULL,  chaque  signal
              indiqué  est  ignoré  par  l'interpréteur  et  par  les commandes qu'il appelle. Si
              argument n'est pas présent et que -p est fourni, les commandes capturées  associées
              à  chaque  signal sont affichées. Si aucun argument n'est fourni, ou si seul -p est
              donné, trap affiche la liste des commandes associées à chaque signal.  L'option  -l
              conduit  l'interpréteur  à  afficher  une  liste  des noms de signal et leur numéro
              correspondant. Chaque signal est soit un nom de signal défini dans <signal.h>, soit
              un  numéro  de signal. Les noms de signal sont insensibles à la casse et le préfixe
              SIG est optionnel.

              Si un signal est EXIT (0), la commande argument est exécutée lors de la  sortie  de
              l'interpréteur.  Si  un  signal  est DEBUG, la commande argument est exécutée avant
              toute commande simple, commande for, commande case, commande select, toute commande
              for  arithmétique,  et  avant  que  la  première commande n'exécute une fonction de
              l'interpréteur (consultez GRAMMAIRE DE L'INTERPRÉTEUR. above). Reportez-vous  à  la
              description  de  l'option  extdebug  de  la commande interne shopt pour obtenir des
              renseignements sur les effets de la capture DEBUG. Si  un  signal  est  RETURN,  la
              commande  argument est exécutée à chaque fois qu'une fonction de l'interpréteur, ou
              un script exécuté avec les commandes internes . ou source, termine son exécution.

              Si un signal est ERR, la commande argument est exécutée chaque fois qu'un  pipeline
              (qui  peut  être  réduit  à  une unique commande simple), une liste ou une commande
              composée, renvoie un état final différent de zéro, soumis aux conditions suivantes.
              La  capture  ERR n'est pas exécutée si la commande échouant fait partie d'une liste
              de commandes suivant immédiatement un mot clef while ou until, d'un test  dans  une
              construction  if,  d'une  commande  exécutée  au  sein  d'une  liste de && ou de ||
              exceptée la commande suivant le dernier && ou ||, n’importe  quelle  commande  d’un
              pipeline  sauf  la  dernière, ou si la valeur renvoyée par la commande est inversée
              par !. Ce sont les mêmes conditions que celles observées par l'option errexit (-e).

              Les signaux ignorés en entrant dans l'interpréteur  ne  peuvent  être  capturés  ou
              réinitialisés.  Les  signaux  capturés qui ne sont pas ignorés sont réinitialisés à
              leur  valeur  d'origine  dans  un  sous-interpréteur   ou   un   environnement   de
              sous-interpréteur quand il est créé. L'état renvoyé est faux si un signal n'est pas
              valable, sinon trap renvoie vrai.

       type [-aftpP] nom [nom ...]
              Sans option, indiquer la façon d’interpréter chaque nom s’il est utilisé en nom  de
              commande.  Si  l'attribut  -t  est  utilisé,  type  affiche  une des chaînes alias,
              keyword, function, builtin ou file selon que le nom  est  un  alias,  un  mot  clef
              réservé  de l'interpréteur, une fonction, une commande interne ou un fichier sur le
              disque. Si le nom n'est pas trouvé, rien n'est affiché et un état final à faux  est
              renvoyé.  Si  l'option  -p  est  utilisée,  type renvoie le nom du fichier qui sera
              exécuté si l'on tape le nom en guise de commande ou rien si  ``type  -t  name''  ne
              renvoyait pas file. L'option -P force une recherche dans PATH pour chaque nom, même
              si ``type -t name'' ne renvoyait pas file. Si une commande est disponible  dans  la
              table  de  hachage,  -p  et  -P  affichent  la valeur de cette table, qui n'est pas
              nécessairement le fichier apparaissant en premier dans PATH.  Si  l'option  -a  est
              appelée, type affiche tous les emplacements contenant un exécutable du nom indiqué.
              Cela inclut les alias et les fonctions, sauf si l'option -p est également présente.
              La table de hachage des commandes n'est pas consultée avec l'option -a. L'option -f
              supprime la fonction de l'interpréteur de consultation  de  table,  comme  avec  la
              commande  interne  command. type renvoie vrai si tous les arguments sont trouvés et
              faux si aucun n'a été trouvé.

       ulimit [-HS] -a
       ulimit -HS] [-bcdefiklmnpqrstuvxPRT [limitation]]
              Fournir, sur  les  systèmes  qui  le  permettent,  un  mécanisme  de  contrôle  des
              ressources  disponibles  pour l'interpréteur et pour les processus qu'il lance. Les
              options -H et -S indiquent si la limitation  est  stricte  (« hard »)  ou  flexible
              (« soft »)  pour  la  ressource  indiquée.  Une limitation stricte ne peut pas être
              augmentée par un utilisateur non privilégié une fois qu'elle a été configurée ; une
              limitation  flexible peut être augmentée jusqu'à la valeur de la limitation stricte
              correspondante. Si ni -H ni -S n'est indiqué, les limitations stricte  et  flexible
              sont  toutes  deux  configurées.  La  valeur  de  la limitation peut être un nombre
              (utilisant les unités particulières de la ressource) ou l'une des valeurs spéciales
              hard,  soft  ou  unlimited,  qui  signifient, respectivement, la limitation stricte
              actuelle, la limitation  flexible  actuelle  et  l'absence  de  limitation.  Si  la
              limitation  est  omise,  la  valeur  actuelle  de  la  limitation  flexible pour la
              ressource est affichée, à moins que l'option  -H  soit  indiquée.  Quand  plusieurs
              ressources  sont  indiquées,  les  noms  des  limitations  et  leurs unités, le cas
              échéant, sont affichés avant les valeurs.  Les  autres  options  sont  interprétées
              comme suit :
              -a     Toutes  les  limitations  actuelles sont signalées ; aucune limitation n'est
                     fixée
              -b     La taille maximale du tampon de socket
              -c     La taille maximale des fichiers core créés
              -d     La taille maximale du segment de données d'un processus
              -e     La priorité maximale d’ordonnancement (« nice »)
              -f     La taille maximale d'un fichier écrit par l'interpréteur et ses enfants
              -i     Le nombre maximal de signaux en attente
              -k     Le nombre maximal de kqueue qui peuvent être alloués
              -l     La taille maximale qui peut être verrouillée en mémoire
              -m     La taille maximale de la partie résidente  d'un  processus  (« resident  set
                     size » ou RSS, la plupart des systèmes ne respectent pas cette limite)
              -n     Le  nombre  maximal  de  descripteurs  de  fichiers  ouverts (la plupart des
                     systèmes ne permettent pas de modifier cette valeur)
              -p     La taille d'un tube en blocs de 512 octets (parfois inexistante)
              -q     Le nombre maximal d'octets dans les files de messages POSIX
              -r     La priorité maximale d'ordonnancement temps-réel
              -s     La taille maximale de la pile
              -t     La durée maximale, en seconde, de temps processeur accordé à un processus
              -u     Le nombre maximal de processus autorisés pour un seul utilisateur
              -v     La quantité maximale de mémoire virtuelle disponible pour l'interpréteur et,
                     sur certains systèmes, pour ses enfants
              -x     Le nombre maximal de verrous de fichiers
              -P     Le nombre maximal de pseudo-terminaux
              -R     La  durée  maximale  pendant  laquelle  un  processus  en  temps  réel  peut
                     s'exécuter avant de bloquer, en microsecondes.
              -T     Le nombre maximal de processus légers (« threads »)

              Si une limitation est indiquée, et que l'option -a  n’est  pas  donnée,  limitation
              sera la nouvelle valeur pour la ressource indiquée. Si aucune option n'est indiquée
              alors -f est supposée. Les valeurs s'expriment par pas de 1024 octets, sauf pour -t
              qui  est  en  secondes,  -R qui est en microsecondes, -p qui utilise comme unité le
              bloc de 512 octets ; pour -P, -T, -b, -k, -n et -u qui n'ont pas  d'unité ;  enfin,
              en  mode POSIX, la valeur pour -c et -f s'exprime par pas de 512 octets. Le code de
              retour est 0, sauf si une option ou un argument incorrect ont été fournis ou si une
              erreur se produit en configurant une nouvelle limitation.

       umask [-p] [-S] [mode]
              Le  masque  de  création  de fichier de l'utilisateur est configuré à mode. Si mode
              commence par un chiffre, il est interprété comme un  nombre  octal,  sinon  il  est
              considéré  comme  un  masque symbolique, semblable à ceux acceptés par chmod(1). Si
              mode est omis ou si l'option -S est fournie,  la  valeur  actuelle  du  masque  est
              affichée.  L'option  -S  conduit  à  l'affichage  du  masque sous forme symbolique,
              l'affichage par défaut étant en octal. Si l'option -p est fournie et si le mode est
              omis,  la sortie a lieu dans un format réutilisable en entrée. L'état renvoyé est 0
              si le mode a pu être changé correctement ou si aucun argument mode n'a été  fourni,
              et faux sinon.

       unalias [-a] [nom ...]
              Supprimer  le nom de la liste des alias définis. Si l'option -a est fournie, toutes
              les définitions d'alias sont supprimées. La valeur renvoyée est vrai,  sauf  si  un
              nom fourni n'est pas un alias défini.

       unset [-fv] [-n] [nom ...]
              Pour  chaque  nom  indiqué, supprimer la variable ou la fonction correspondante. Si
              l'option -v est indiquée, chaque nom se rapporte à une variable de  l'interpréteur,
              et cette variable est supprimée. Les variables en lecture seule ne peuvent pas être
              détruites. Si l'option -f est indiquée, chaque nom se rapporte à  une  fonction  de
              l'interpréteur  et  la  définition de la fonction est supprimée. Si l’option -n est
              fournie, et que nom est une variable avec l’attribut  nameref,  nom  sera  détruite
              plutôt  que  la  variable  qu’elle référence. -n n’a pas d’effet si l’option -f est
              fournie. Si aucune option n’est fournie, chaque nom fait référence à une variable ;
              si  aucune  variable  de  ce  nom  n’existe,  toutes  les  fonctions de ce nom sont
              détruites.  Toutes  les  variables  et  fonctions  détruites  sont  supprimées   de
              l'environnement   transmis  aux  commandes  ultérieures.  Si  l'une  des  variables
              BASH_ALIASES,  BASH_ARGV0,   BASH_CMDS,   BASH_COMMAND,   BASH_SUBSHELL,   BASHPID,
              COMP_WORDBREAKS,  DIRSTACK, EPOCHREALTIME, EPOCHSECONDS, FUNCNAME, GROUPS, HISTCMD,
              LINENO, RANDOM,  SECONDS,  ou  SRANDOM  est  détruite,  elle  perd  ses  propriétés
              particulières,  même si elle est recréée ultérieurement. L'état final est vrai sauf
              si un des noms est en lecture seule ou ne peut pas être détruit.

       wait [-fn] [-p nom_de_variable] [id ...]
              Attendre que tous les processus enfants indiqués s’exécutent et renvoient leur état
              final.  Chaque  id  peut  être  un  PID  ou  une  spécification  de  tâche ; si une
              spécification de tâche est indiquée, la fin de tous les processus  du  pipeline  de
              cette  tâche sera attendue. Si id est omis, wait attend la fin de toutes les tâches
              exécutées en arrière-plan et la substitution du dernier processus exécuté, si  l'id
              du  processus est le même que $!, et le code de retour est zéro. Si l’option -n est
              fournie, wait attend qu'une seule tâche de la liste d'id  ou,  si  aucun  id  n'est
              fourni,  que  toutes les tâches se terminent et renvoient leur état final. Si aucun
              des arguments fournis n'est un enfant de l'interpréteur, l'état renvoyé est 127. Si
              l'option -p est fournie, l'identificateur de processus ou de tâche de la tâche pour
              laquelle l'état final est renvoyé est affecté à la variable nom_de_variable  nommée
              par  l'argument  de  l'option.  La variable sera détruite initialement, avant toute
              affectation. C'est  utile  seulement  lorsque  l'option  -n  est  fournie.  Fournir
              l'option  -f, quand le contrôle des tâches est activé, force wait à attendre que id
              se termine avant de renvoyer son état, plutôt que de renvoyer  son  état  quand  il
              change.  Si  id  indique  un processus ou une tâche inexistants, l'état renvoyé est
              127. Si wait est interrompu par un signal, l'état  renvoyé  sera  supérieur  à  128
              comme décrit dans SIGNAUX. above. Sinon, l'état renvoyé est l'état final du dernier
              processus, ou tâche, attendu.

MODE DE COMPATIBILITÉ DE L'INTERPRÉTEUR

       Bash-4.0 a introduit le concept de niveau  de  compatibilité  de  l'interpréteur  spécifié
       comme  un  ensemble  d'options de la commande interne shopt (compat31, compat32, compat40,
       compat41, etc.). Il ne peut y avoir qu'un seul niveau  de  compatibilité  en  cours  – les
       options  s'excluent  mutuellement.  Le niveau de compatibilité est destiné à permettre aux
       utilisateurs de choisir un comportement d'une version antérieure qui est incompatible avec
       les   versions   plus   récentes   lors  des  migrations  de  scripts  pour  utiliser  les
       fonctionnalités et les comportements actuels. C'est censé être une solution temporaire.

       Cette section ne mentionne pas les comportements standards d'une version particulière (par
       exemple,  la  configuration  à  compat32 signifie que la protection de la partie droite de
       l'opérateur de correspondance d'une expression rationnelle protège les caractères spéciaux
       d'expression  rationnelle dans le mot, ce qui est le comportement par défaut dans bash-3.2
       et les versions suivantes).

       Si l'utilisateur active, par exemple, compat32, cela peut  affecter  le  comportement  des
       autres  niveaux  de  compatibilité  jusqu'à,  et  y compris, le niveau de compatibilité en
       cours. L'idée est que chaque niveau de compatibilité contrôle les  comportements  qui  ont
       changé  dans cette version de bash, mais ces comportements peuvent avoir été présents dans
       des versions précédentes. Par exemple, la  modification  pour  utiliser  les  comparaisons
       basées  sur  les  paramètres  linguistiques régionaux avec la commande [[ a été introduite
       dans bash-4.1 et les versions précédentes utilisaient des comparaisons basées  sur  ASCII,
       aussi,  activer  compat32  activera  également  les  comparaisons  basées sur ASCII. Cette
       granularité peut ne pas être suffisante  pour  tous  les  usages,  et,  de  ce  fait,  les
       utilisateurs  devraient  employer  prudemment  les  niveaux  de  compatibilité.  Lisez  la
       documentation d'une fonctionnalité particulière pour découvrir le comportement actuel.

       Bash-4.3 a introduit une nouvelle variable  de  l'interpréteur :  BASH_COMPAT.  La  valeur
       affectée  à  cette  variable (un numéro de version décimal, comme 4.2, ou un nombre entier
       correspondant à l'option compatNN, comme 42) détermine le niveau de compatibilité.

       À partir de bash-4.4, bash a commencé à rendre obsolètes les niveaux de compatibilité plus
       anciens. Les options finiront par être retirées au profit de BASH_COMPAT.

       Bash-5.0  est la dernière version pour laquelle il y aura une option de shopt particulière
       pour la version précédente. Les utilisateurs devraient utiliser BASH_COMPAT avec  bash-5.0
       et les versions ultérieures.

       Le   tableau   suivant  décrit  les  changements  de  comportement  contrôlés  par  chaque
       configuration de niveau de compatibilité. L'étiquette compatNN est  un  raccourci  utilisé
       pour  configurer  le niveau de compatibilité à NN en utilisant un des mécanismes suivants.
       Pour les versions antérieures à bash-5.0, le niveau de compatibilité peut être  fixé  avec
       l'option  de  compatNN de shopt correspondante. Pour bash-4.3 et les versions ultérieures,
       la variable BASH_COMPAT est privilégiée  et  devient  obligatoire  pour  bash-5.1  et  les
       versions ultérieures.

       compat31
              •      La  protection  de  la  partie  droite de l'opérateur de correspondance (=~)
                     d'une expression rationnelle de la commande [[ n'a aucun effet particulier.

       compat32
              •      L'interruption d'une liste de  commandes  comme  « a  ;  b  ;  c »  provoque
                     l'exécution  de  la  commande  suivante  dans la liste (avec bash-4.0 et les
                     versions  ultérieures,  l'interpréteur  se  comporte  comme  s'il   recevait
                     l'interruption,  aussi  l'interruption d'une commande dans une liste termine
                     l'exécution de toute la liste).

       compat40
              •      Les opérateurs < et  >  de  la  commande  [[  ne  tiennent  pas  compte  des
                     paramètres linguistiques régionaux actuels lors des comparaisons de chaînes.
                     Ils  utilisent  l'ordre  ASCII.  Les  versions  de  bash  antérieures  à 4.1
                     utilisent  la  collation ASCII et strcmp(3). bash à partir de la version 4.1
                     utilise la suite de collation  des  paramètres  linguistiques  régionaux  et
                     strcoll(3).

       compat41
              •      En  mode  POSIX,  time  peut être suivi par des options tout en continuant à
                     être reconnu comme un mot réservé (c'est l'interprétation POSIX 267).
              •      En mode POSIX, l'analyseur exige qu'il existe un nombre pair  de  guillemets
                     simples  dans la partie mot d'un développement de paramètres protégé par des
                     guillemets doubles et les traite de façon particulière, ainsi les caractères
                     entre   les   guillemets  simples  sont  considérés  comme  protégés  (c'est
                     l'interprétation POSIX 221).

       compat42
              •      La chaîne de remplacement dans le motif  de  substitution  entre  guillemets
                     doubles  n'est  pas  sujette à la suppression des guillemets, comme dans les
                     versions postérieures à bash-4.2.
              •      En mode POSIX, les guillemets simples sont considérés particuliers  lors  du
                     développement de la partie mot d'un développement de paramètres protégée par
                     des guillemets doubles et peuvent être utilisés pour protéger  une  accolade
                     fermante ou un autre caractère spécial (cela fait partie de l'interprétation
                     POSIX 221) ; dans les versions ultérieures, les guillemets simples  ne  sont
                     pas   traités   particulièrement  dans  les  développements  de  mots  entre
                     guillemets doubles.

       compat43
              •      L'interpréteur n'affiche pas de message d'avertissement si une tentative est
                     faite  d'utiliser  une  affectation  composée  protégée  comme un argument à
                     déclarer (par exemple, déclarer -a toto='(1 2)'). Les  versions  ultérieures
                     avertissent que cette utilisation est obsolète.
              •      Les  erreurs  de  développement  de  mots  ne sont pas considérées comme des
                     erreurs fatales qui provoquent l'échec de la commande en cours, même en mode
                     POSIX  (le  comportement  par  défaut  est  de les traiter comme des erreurs
                     fatales, ce qui fait que l'interpréteur termine).
              •      Lors de l'exécution d'une fonction de l'interpréteur, l'état  de  la  boucle
                     (while/until/ etc.)  n'est  pas  réinitialisé,  aussi break ou continue dans
                     cette fonction interrompt ou poursuit la boucle dans le contexte de l'appel.
                     Bash-4.4 et les versions ultérieures réinitialisent l'état de la boucle pour
                     éviter cela.

       compat44
              •      L'interpréteur configure les valeurs utilisées par BASH_ARGV et BASH_ARGC de
                     telle  manière  qu'elles peuvent se développer en paramètres positionnels de
                     l'interpréteur même si le mode de traçage étendu n'est pas activé.
              •      Un sous-interpréteur hérite des boucles du contexte  de  son  parent,  aussi
                     break ou continue provoqueront la terminaison du sous-interpréteur. Bash-5.0
                     et les versions ultérieures réinitialisent l'état de la boucle  pour  éviter
                     la terminaison.
              •      Les  affectations de variables précédant des commandes internes comme export
                     et readonly  qui  configurent  des  attributs,  continuent  à  affecter  des
                     variables   ayant   le   même  nom  dans  l'environnement  d'appel  même  si
                     l'interpréteur n'est pas en mode POSIX.

       compat50
              •      Bash-5.1 a modifié la manière dont $RANDOM est généré pour introduire un peu
                     plus  d'aléa.  Si le niveau de compatibilité de l'interpréteur est fixé à 50
                     ou  moins,  bash  retourne  à  la  méthode  de  bash-5.0  et  des   versions
                     antérieures,  aussi  l'ensemencement  du générateur de nombres aléatoires en
                     affectant une valeur à RANDOM produira la même séquence qu'avec bash-5.0.
              •      Si la table de  hachage  des  commandes  est  vide,  les  versions  de  bash
                     antérieures à bash-5.1 affichaient un message d’information à cet effet même
                     quand elles produisaient une sortie qui pouvait être réutilisée  en  entrée.
                     Bash-5.1 supprime ce message quand l'option -l est fournie.

       compat51
              •      La  commande  interne unset traite les tentatives pour détruire les tableaux
                     indicés par @ et * différemment selon que le tableau est un  tableau  indicé
                     ou associatif, et autrement que dans les versions précédentes.

INTERPRÉTEUR RESTREINT

       Si  bash  démarre  sous  le  nom  rbash  ou  si l'option -r est fournie lors de son appel,
       l'interpréteur  devient  restreint.  Un  interpréteur  restreint  permet   de   créer   un
       environnement  plus contrôlé qu'un interpréteur standard. Il se comporte de même façon que
       bash à la différence des actions suivantes qui sont interdites ou non effectuées :

       •      changer de répertoire avec cd ;

       •      créer ou détruire les valeurs de SHELL, PATH, HISTFILE, ENV ou BASH_ENV ;

       •      indiquer des noms de commandes contenant un / ;

       •      indiquer un nom de fichier contenant un / comme argument de la commande interne . ;

       •      indiquer un nom de fichier contenant une barre oblique (/)  comme  argument  de  la
              commande interne history ;

       •      indiquer  un  nom de fichier contenant une barre oblique comme argument de l'option
              -p de la commande interne hash ;

       •      importer une définition de fonction dans l'environnement au démarrage ;

       •      analyser les valeurs de SHELLOPTS de l'environnement d'interpréteur au démarrage ;

       •      rediriger la sortie en utilisant les opérateurs de redirection >, >|, <>, >&, &> et
              >> ;

       •      utiliser  la  commande  interne  exec  pour  remplacer l'interpréteur par une autre
              commande ;

       •      ajouter ou supprimer des commandes internes  avec  les  options  -f  et  -d  de  la
              commande interne enable ;

       •      utiliser  la  commande  interne  enable  pour  activer  les  commandes  internes de
              l'interpréteur désactivées ;

       •      indiquer l'option -p à la commande interne commande ;

       •      supprimer le mode restreint avec set +r ou shopt -u restricted_shell.

       Ces  restrictions  sont  mises  en  place  après  la  lecture   de   tous   les   fichiers
       d’initialisation.

       When  a  command  that  is  found  to be a shell script is executed (see COMMAND EXECUTION
       above), rbash supprime toute restriction dans l'interpréteur créé pour exécuter le script.

VOIR AUSSI

       Manuel de référence de Bash, Brian Fox et Chet Ramey
       The GNU Readline Library, Brian Fox et Chet Ramey
       The GNU History Library, Brian Fox et Chet Ramey
       Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE –
              http://pubs.opengroup.org/onlinepubs/9699919799/
       http://tiswww.case.edu/~chet/bash/POSIX – une description du mode POSIX
       sh(1), ksh(1), csh(1)
       emacs(1), vi(1)
       readline(3)

FICHIERS

       /bin/bash
              L'exécutable bash
       /etc/profile
              Le  fichier  d'initialisation  commun  à  tout  le  système,   exécuté   pour   les
              interpréteurs de commandes de connexion
       /etc/bash.bashrc
              Le  fichier  d’initialisation  commun  à  tout  le  système  pour les interpréteurs
              interactifs
       /etc/bash.bash.logout
              Le fichier de nettoyage des interpréteurs de connexion commun à  tout  le  système,
              exécuté lorsqu'un interpréteur de connexion termine
       ~/.bash_profile
              Le  fichier  d'initialisation personnel exécuté pour les interpréteurs de commandes
              de connexion
       ~/.bashrc
              Le fichier d’initialisation personnel pour les interpréteurs interactifs
       ~/.bash_logout
              Le fichier de nettoyage personnel des  interpréteurs  de  commandes  de  connexion,
              exécuté lorsqu'un interpréteur de commandes de connexion termine
       ~/.bash_history
              La  valeur  par  défaut  de  HISTFILE,  le  fichier  dans  lequel  bash  sauvegarde
              l'historique des commandes
       ~/.inputrc
              Le fichier d'initialisation personnel de readline

AUTEURS

       Brian Fox, Free Software Foundation
       bfox@gnu.org

       Chet Ramey, Case Western Reserve University
       chet.ramey@case.edu

SIGNALEMENTS DE BOGUES

       Si vous trouvez une anomalie dans bash, vous devriez la signaler. Tout d'abord vous  devez
       vous  assurer  qu'il  s'agit  réellement  d'une  anomalie et qu'elle apparaît bien dans la
       dernière version disponible de bash. La dernière version est toujours disponible à  partir
       de ftp://ftp.gnu.org/pub/gnu/bash/.

       Une  fois  que  vous  avez  déterminé  qu'une  anomalie  existe effectivement, utilisez la
       commande bashbug pour envoyer un signalement d'anomalie. Si vous avez un  correctif,  vous
       êtes encouragé à l'envoyer en même temps ! Les suggestions ou les signalements d'anomalies
       de nature « philosophique » peuvent être envoyés (en anglais) à bug-bash@gnu.org ou postés
       dans le groupe Usenet gnu.bash.bug.

       TOUS les signalements d'anomalie doivent contenir :

       Le numéro de version de bash
       Le matériel et le système d'exploitation utilisés
       Le compilateur utilisé pour compiler
       Une description (en anglais) de l'anomalie
       Un petit script ou une « recette » qui démontre l'anomalie

       bashbug  insère  automatiquement  les  trois  premiers  éléments  de  cette  liste dans le
       formulaire qu'il fournit pour remplir un signalement d'anomalie.

       Les commentaires et signalement d'anomalies concernant la version originale de cette  page
       de  manuel (en anglais) doivent être transmis à chet.ramey@case.edu. Ceux concernant cette
       version française peuvent être envoyés à debian-l10n-french@lists.debian.org.

BOGUES

       Cet interpréteur de commandes est trop gros et trop lent.

       Il y  a  quelques  différences  subtiles  de  comportement  entre  bash  et  les  versions
       traditionnelles de sh, principalement à cause des spécifications POSIX.

       L'utilisation des alias peut avoir des conséquences inattendues.

       Les   commandes   internes  et  les  fonctions  de  l'interpréteur  ne  peuvent  pas  être
       suspendues/relancées.

       Les commandes composées et les suites de commandes de la forme « a ; b ; c » ne  sont  pas
       gérées  élégamment  lors  d'une  interruption  de  processus.  En  cas  de suspension d'un
       processus, l'interpréteur exécute immédiatement la commande suivante. Il suffit de  placer
       cette  suite  de  commandes entre parenthèses pour la forcer à créer un sous-interpréteur,
       qui, lui, pourra être suspendu en bloc.

       Les variables de type tableau ne peuvent pas (encore) être exportées.

       Il ne peut exister qu'un seul coprocessus actif à la fois.

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <ccb@club-internet.fr>,    Thierry    Vignaud    <tvignaud@mandriva.com>,    Amand   Tihon
       <amand@alrj.org>, Alain  Portal  <aportal@univ-montp2.fr>,  Frederic  Daniel  Luc  Lehobey
       <Frederic@Lehobey.net>,  David  Prévot  <david@tilapin.org>  et  Jean-Pierre Giraud <jean-
       pierregiraud@neuf.fr>

       Cette traduction est une documentation libre ; veuillez vous reporter  à  la  GNU  General
       Public   License   version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  concernant  les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à ⟨debian-l10n-french@lists.debian.org⟩.