dwww Home | Manual pages | Find package

BASH(1)                     General Commands Manual                    BASH(1)

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 uti-
       lisées  comme  options si l'interpréteur est invoqué. De plus, bash ac-
       cepte 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 op-
                 tion. Si des arguments suivent la chaîne_de_commande, le pre-
                 mier argument est assigné à $0 et tous les autres sont affec-
                 té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  stan-
                 dard. 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ésac-
                 tivent  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 com-
              mandes 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'ini-
              tialisation  ~/.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 docu-
              ment précisant la façon dont le mode POSIX affecte le  comporte-
              ment de bash.

       --restricted
              L'interpréteur  devient  restreint  (consultez INTERPRÉTEUR RES-
              TREINT 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 pa-
       ramètres positionnels. Bash lit et exécute les commandes depuis ce  fi-
       chier,  puis  termine. L'état final de bash est l'état final de la der-
       niè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 ap-
       pelé 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 fi-
       chier d’initialisation de tester cet état.

       Le paragraphe suivant décrit comment bash exécute ses  fichiers  d'ini-
       tialisation.  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 in-
       teractif 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 re-
       cherche ~/.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  uti-
       lisé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 lan-
       cer 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  com-
       mande 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 pos-
       sible, tout en restant conforme à la norme POSIX. Lorsqu'il est  appelé
       comme interpréteur de commandes de connexion interactif ou non interac-
       tif 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émar-
       rage.  Dans  ce  mode, les interpréteurs interactifs développent la va-
       riable 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'initialisa-
       tion n'est lu.

       Bash tente de déterminer s'il est exécuté avec son entrée standard  re-
       lié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éra-
       lement  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'ap-
       pellent généralement pas l'interpréteur avec ces  options  et  ne  per-
       mettent pas de les indiquer.

       Si  l'interpréteur est lancé avec un identifiant (de groupe) d'utilisa-
       teur 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 GLOBI-
       GNORE, si présentes dans l'environnement, sont ignorées,  et  l'identi-
       fiant  de l'utilisateur effectif est configuré à celui de l'utilisateur
       réel. Si l'option -p est fournie à l'appel, le comportement  au  démar-
       rage  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  docu-
       ment.
       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 ti-
              ret 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  sym-
              boles 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 com-
       mande (consultez GRAMMAIRE DE L'INTERPRÉTEUR ci-dessous), le  troisième
       mot  d'une  commande  case ou select (seul in est valable), ou le troi-
       siè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  va-
       riables,  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  com-
       mande  à  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'en-
       tré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 com-
       mande_1, en plus de sa sortie standard, est connectée à l'entrée  stan-
       dard  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 sor-
       tie  standard est réalisée après toute redirection précisée par la com-
       mande_1.

       L'état renvoyé par un pipeline est l'état final  de  la  dernière  com-
       mande,  à moins que l'option pipefail soit activée. Si pipefail est ac-
       tivée, l'état renvoyé par le pipeline est la valeur de la dernière com-
       mande  (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éga-
       tion 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 pipe-
       line se termine. L'option -p modifie le format de sortie pour celui in-
       diqué  par  POSIX. Quand l'interpréteur est en mode POSIX, il ne recon-
       naî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 indi-
       quant comment les informations  de  chronométrage  doivent  être  affi-
       chées ;  consultez  ci-dessous  la  description  de TIMEFORMAT dans Va-
       riables de l'interpréteur.

       Quand l'interpréteur est en mode POSIX, time peut être suivi d'un chan-
       gement  de ligne. Dans ce cas, l'interpréteur affiche le temps utilisa-
       teur et système total consommé par l'interpréteur et  ses  enfants.  La
       variable  TIMEFORMAT peut être utilisée pour indiquer le format des in-
       formations 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 ENVIRON-
              NEMENT 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'environne-
              ment  de  l'interpréteur  n'ont pas d'effet une fois que la com-
              mande se termine. L'état renvoyé est l'état final de la liste.

       { liste; }
              liste est simplement exécutée avec l'environnement  de  l'inter-
              pré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'ex-
              pression 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éve-
              loppements que si elle était entre guillemets doubles, mais  les
              caractères  guillemet double dans l'expression ne sont pas trai-
              tés expressément et sont supprimés.

       [[ expression ]]
              Renvoie un état de 0 ou 1 selon l'évaluation de la condition ex-
              pression.  Les  conditions sont composées de primitives décrites
              ci-dessous dans CONDITIONS. Les mots entre [[ et ]] ne sont  su-
              jets  ni  au  découpage en mots ni au développement des chemins.
              L'interpréteur effectue le développement  des  tildes,  des  pa-
              ramètres,  des variables, le développement arithmétique, la sub-
              stitution de commande et de processus, ainsi que la  suppression
              des  protections sur ces mots (les développements qui se produi-
              raient si les mots étaient entre guillemets doubles). Les opéra-
              teurs  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  >  or-
              donnent  d'un  point de vue lexicographique en utilisant les pa-
              ramètres linguistiques régionaux actuels.

       Consultez la description de la commande interne  test  (consultez  COM-
       MANDES  INTERNES  DE L'INTERPRÉTEUR ci-dessous) pour la gestion des pa-
       ramè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 correspon-
       dance 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  nocase-
       match  est  activée, la mise en correspondance est effectuée sans tenir
       compte de la casse (différence majuscule/minuscule) des caractères  al-
       phabétiques. La valeur renvoyée est 0 si les chaînes correspondent (==)
       ou ne correspondent pas (!=), au motif et 1 sinon. Toute partie du  mo-
       tif 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 PO-
       SIX  et  est  mise en correspondance en conséquence (en utilisant habi-
       tuellement les interfaces POSIX  regcomp  et  regexec  comme  avec  re-
       gex(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  syn-
       taxiquement 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 par-
       tie du motif est protégée, cette partie est mise en correspondance lit-
       té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 significa-
       tion 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  va-
       riable  tableau BASH_REMATCH enregistre quelle partie de la chaîne cor-
       respond au motif. L'élément de BASH_REMATCH d'indice 0 contient la par-
       tie  de  la  chaîne correspondant à la totalité de l'expression ration-
       nelle. Les sous-chaînes correspondant aux sous-expressions entre paren-
       thè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 pa-
       renthèses. La configuration de BASH_REMATCH par bash est de portée glo-
       bale ; la déclarer comme une variable locale mènera à des résultats in-
       attendus.

       Les expressions peuvent être combinées en utilisant les opérateurs sui-
       vants, 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  cha-
              cun  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 com-
              mande  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'ex-
              pression  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 ren-
              voyé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 uti-
              lisant le développement  du  tilde,  le  développement  des  pa-
              ramè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 pa-
              ramè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 nocase-
              match 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 com-
              mande 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 à  uti-
       liser et plus complète que les autres commandes composées.

       Si  commande  est une commande composée, NOM est optionnel. Le mot sui-
       vant coproc détermine si ce mot est interprété  comme  un  nom  de  va-
       riable : 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  ta-
       bleau  (consultez  Tableaux ci-dessous) appelée NOM dans le contexte de
       l'interpréteur d'exécution. La sortie standard de commande est  connec-
       té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 fi-
       chier 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'inter-
       pré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écu-
       ter le coprocessus est la valeur disponible de la variable NOM_PID.  La
       commande  interne wait peut être réutilisée pour attendre que le copro-
       cessus soit terminé.

       Puisque le coprocessus est créé comme une commande asynchrone, la  com-
       mande  coproc  se termine toujours avec succès. L'état renvoyé d'un co-
       processus 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 paren-
              thèses  sont  facultatives.  Le corps de la fonction est la com-
              mande composée commande-composée (consultez Commandes  composées
              ci-dessus).  Cette  commande  est généralement une liste de com-
              mandes 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 four-
              nies,  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 com-
              mandes  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 fonc-
              tion est exécutée. Le code de retour d'une définition  de  fonc-
              tion  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 ce-
              lui de la dernière commande exécutée dans le corps de  la  fonc-
              tion (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 inter-
       active_comments n'autorise  pas  les  commentaires.  L'option  interac-
       tive_comments  est  activée  par défaut dans les interpréteurs interac-
       tifs.

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 em-
       pêcher le développement des paramètres.

       Tous les métacaractères décrits ci-dessus dans DÉFINITIONS ont des  si-
       gnifications  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 ca-
       ractè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 \<change-
       ment   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  pra-
       tique).

       Encadrer des caractères entre des guillemets simples préserve la valeur
       littérale de chacun des caractères entre guillemets simples. Un guille-
       met  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évelop-
       pement 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  suppri-
       mée.

       Les  caractères  spéciaux  *  et  @  ont  des  significations spéciales
       lorsqu'ils se trouvent entre  des  guillemets  doubles  (consultez  PA-
       RAMÈ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évelop-
       pé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 hexa-
                     décimale est HHHH (un à quatre chiffres hexadécimaux) ;
              \UHHHHHHHH
                     le caractère Unicode (ISO/IEC 10646) dont la valeur hexa-
                     dé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  par-
       court  la  chaîne et effectue la traduction, en utilisant les variables
       de l'interpréteur LC_MESSAGES, TEXTDOMAINDIR et TEXTDOMAIN. Si les  pa-
       ramè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 pro-
       té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-des-
       sous,  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-des-
       sous).

       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  va-
       riable. Toutes les valeurs sont sujettes au développement du tilde, des
       paramètres et des variables, à la substitution de commande, au dévelop-
       pement  arithmétique et à la suppression des protections (consultez DÉ-
       VELOPPEMENTS ci-dessous). Si une variable a son attribut integer confi-
       guré,  alors la valeur est soumise à l'évaluation arithmétique, même si
       la syntaxe $((...)) n'est pas utilisée (consultez Développement  arith-
       métique  ci-dessous). Le découpage en mots et le développement des che-
       mins ne sont pas effectués. Les affectations  peuvent  également  appa-
       raître  comme  arguments  des commandes internes suivantes : alias, de-
       clare, 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  com-
       mand 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 va-
       riable. 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  in-
       teger  (entier)  a  été positionné, la valeur est évaluée comme une ex-
       pression arithmétique et additionnée à la valeur  actuelle  de  la  va-
       riable  qui  est  également  évaluée. Lorsque += est appliqué à une va-
       riable 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  ta-
       bleau  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 va-
       riable.

       L’attribut  nameref peut être affecté à une variable en utilisant l’op-
       tion -n des commandes internes declare et local (consultez la  descrip-
       tion  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  (autre-
       ment  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 affec-
       tations 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  éta-
       blie  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é.  na-
       meref 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  en-
       cadré par des accolades lors de son développement (consultez DÉVELOPPE-
       MENTS ci-dessous).

   Paramètres spéciaux
       L'interpréteur traite  plusieurs  paramètres  spécifiquement.  Ces  pa-
       ramè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éve-
              loppent 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éveloppe-
              ments  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 pa-
              ramètres  sont séparés par des espaces. Si IFS est NULL, les pa-
              ramè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éve-
              loppe en un mot distinct séparé par des espaces. Quand le  déve-
              loppement  a  lieu entre guillemets doubles, chaque paramètre se
              développe en un mot distinct. C'est-à-dire que  "$@"  est  équi-
              valent  à  "$1"  "$2"  ....  Si  le développement des guillemets
              doubles survient dans un mot, le développement  du  premier  pa-
              ramètre  est  accolé à la première partie du mot d'origine et le
              développement du dernier paramètre est accolé à la dernière par-
              tie du mot d'origine. Quand il n'y a pas de paramètres position-
              nels, "$@" 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éci-
              male.
       ?      Se développe en état final du dernier pipeline exécuté  au  pre-
              mier plan.
       -      Est  remplacé  par  la liste des options de l'interpréteur indi-
              qué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'op-
              tion -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  ar-
              riè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 com-
              mandes à exécuter. Sinon, ce paramètre contient le  nom  de  fi-
              chier  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  uti-
              lisé pour appeler l'interpréteur, ou le script en cours d'exécu-
              tion tel qu'il est passé dans l'environnement ou dans  la  liste
              des  arguments.  Devient  ensuite le dernier argument de la com-
              mande simple précédente exécutée au premier plan, après dévelop-
              pement.  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 cour-
              rier, contient le nom du fichier de courrier en cours de consul-
              tation.
       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 cor-
              rect 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 lance-
              ment de bash, chaque option de la liste  est  activée  avant  de
              lire  les  fichiers d’initialisation. Cette variable est en lec-
              ture seule.
       BASHPID
              Se transforme en PID du processus de l'interpréteur bash actuel.
              Diffère de $$ sous certaines conditions, comme dans les sous-in-
              terpré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 re-
              créée par la suite.
       BASH_ALIASES
              Une  variable  de type tableau associatif dont les éléments cor-
              respondent à une liste interne d'alias comme celle gérée par  la
              commande  interne alias. Les éléments ajoutés à ce tableau appa-
              raissent 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'op-
              tion 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  der-
              nier  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  configu-
              ration de extdebug après que l'interpréteur ait démarré l'exécu-
              tion d'un script, ou le référencement de  cette  variable  quand
              extdebug  n'existe  pas  peut  provoquer une incohérence des va-
              leurs.
       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'affec-
              tation d'une valeur à BASH_ARGV0 fait que cette valeur est aussi
              assignée à $0. Si BASH_ARGV0 est détruite, elle  perd  ses  pro-
              prié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 cor-
              respondent à 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écu-
              té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ù ${FUNC-
              NAME[$i]} a été appelé (ou ${BASH_LINENO[$i-1]} si consulté  de-
              puis 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 corres-
              pondants à la variable de type tableau FUNCNAME sont définis. La
              fonction d'interpréteur ${FUNCNAME[$i]} est définie dans le  fi-
              chier ${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_COM-
              MAND 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 (re-
                                      lease).
              BASH_VERSINFO[1]        Le numéro mineur  de  la  version  (ver-
                                      sion).
              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 ac-
              tuelle du curseur. Cette variable n'est disponible que dans  les
              fonctions de l'interpréteur appelées par les outils de complète-
              ment programmables (consultez Complètement programmable  ci-des-
              sous).
       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  program-
              mable 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 appe-
              lé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ète-
              ment :  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  va-
              riable 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 sor-
              ties  depuis  et  les  entrées  vers  un  coprocessus  non nommé
              (consultez Coprocessus ci-dessus).
       DIRSTACK
              Une variable de type tableau (consultez Tableaux ci-dessous) re-
              pré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  pro-
              prié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  igno-
              ré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émar-
              rage 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 fonc-
              tions 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 ef-
              fet. 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  corres-
              pondant  dans  BASH_LINENO  et  BASH_SOURCE pour décrire la pile
              d'appel. Par exemple, ${FUNCNAME[$i]} a été appelé depuis le fi-
              chier ${BASH_SOURCE[$i+1]} à la ligne numéro ${BASH_LINENO[$i]}.
              La commande interne caller affiche la pile d'appel actuelle uti-
              lisant 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 igno-
              ré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  sys-
              tè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  map-
              file si aucun nom de variable n'a été fourni.
       OLDPWD Le répertoire de travail précédent tel que configuré par la com-
              mande 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-des-
              sous).
       OSTYPE Automatiquement configurée en chaîne décrivant le système  d'ex-
              ploitation  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 va-
              riable est en lecture seule.
       PWD    Le répertoire de travail actuel tel que configuré  par  la  com-
              mande 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 à RAN-
              DOM  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" (consul-
              tez COMMANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). Les carac-
              tères entre le point d'insertion et la marque sont souvent appe-
              lés la zone.
       READLINE_POINT
              La position du point d'insertion dans le tampon de  ligne  read-
              line, 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 interro-
              geant 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  cor-
              rect pour l'option -o de la commande interne set (consultez COM-
              MANDES INTERNES DE L'INTERPRÉTEUR ci-dessous). Les options appa-
              raissant  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 affec-
              tations à cette variable n'ont aucun effet. Si SRANDOM  est  dé-
              truite, elle perd ses propriétés spéciales, même si elle est re-
              créé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 cer-
       tains 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'INTER-
              PRÉ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) cor-
              respondant au niveau de compatibilité voulu. Si BASH_COMPAT  est
              détruite ou définie comme une chaîne vide, le niveau de compati-
              bilité est défini à la valeur par défaut de la version actuelle.
              Si  BASH_COMPAT est définie à une valeur de niveau de compatibi-
              lité 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  ni-
              veaux  de compatibilité décrits ci-dessous dans MODE DE COMPATI-
              BILITÉ DE L'INTERPRÉTEUR. Par exemple, 4.2 et 42  sont  des  va-
              leurs  possibles  qui correspondent à l'option compat42 de shopt
              et définissent le niveau de compatibilité à 42. La  version  ac-
              tuelle 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 va-
              leur 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 descrip-
              teur 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  en-
              voyée vers la sortie d'erreur standard. Remarquez que configurer
              BASH_XTRACEFD à 2 (le descripteur de fichier de la sortie  d'er-
              reur standard) puis la détruire revient à fermer la sortie d'er-
              reur 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 lar-
              geur  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ète-
              ments  possibles produits par une fonction de l'interpréteur ap-
              pelé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'in-
              terpréteur démarre avec la valeur "t", il considère que l'inter-
              pré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'in-
              terpré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  corres-
              pondent  à un de ces motifs ne sont pas considérés comme des fi-
              chiers 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 su-
              jets à EXECIGNORE. Utiliser cette variable pour ignorer des  fi-
              chiers  de bibliothèque partagée dont le bit exécutable est pré-
              sent, mais qui ne sont pas des fichiers exécutables. La  corres-
              pondance de motif respecte la configuration de l'option d'inter-
              pré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 (consul-
              tez READLINE ci-dessous). Un nom de fichier dont le suffixe cor-
              respond  à  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  invo-
              cations  de fonctions qui dépassent ce niveau d'imbrication for-
              ceront la commande actuelle à abandonner.
       GLOBIGNORE
              Une liste de motifs séparés par des deux-points « : »,  définis-
              sant l'ensemble des noms de fichier à ignorer lors du développe-
              ment 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  corres-
              pondances.
       HISTCONTROL
              Une  liste  de valeurs, séparées par des deux-points « : », com-
              mandant 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  sauvegar-
              dé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épendam-
              ment 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 com-
              mandes n'est pas sauvegardé lorsqu'un interpréteur se termine.
       HISTFILESIZE
              Le  nombre  maximal de lignes contenues dans le fichier d'histo-
              rique. 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  an-
              ciennes.  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 va-
              leurs non numériques ou négatives empêchent la troncature. L’in-
              terpré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étermi-
              nant 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 va-
              leur par défaut à 500 après avoir lu tous les fichiers d’initia-
              lisation.
       HISTTIMEFORMAT
              Si cette variable existe et n'est pas NULL, sa valeur est utili-
              sée comme une chaîne de caractères par strftime(3) afin d'impri-
              mer  l'horodatage associé à chaque élément de l'historique affi-
              ché 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 fi-
              chier à 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éveloppe-
              ments et pour découper les lignes en mots avec la  commande  in-
              terne  read.  La  valeur  par défaut est « <espace><tab><change-
              ment_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 va-
              leur, la valeur par défaut est 10. Si elle n'existe pas, EOF si-
              gnifie 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'inter-
              pré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_  indi-
              quant 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  com-
              portement  des  expressions  d’intervalle, des classes d'équiva-
              lences 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 uti-
              lisé 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 uti-
              lisé pour formater les nombres.
       LC_TIME
              Cette variable détermine le paramètre linguistique régional uti-
              lisé 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'uti-
              lisateur  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éri-
              fiera  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ésac-
              tive 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     cour-
              rier":~/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  lance-
              ment 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 ac-
              tuel. 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 che-
              min par défaut dépend du système et est choisi par l'administra-
              teur 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 fi-
              chiers 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  com-
              mande 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  va-
              leur 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 com-
              mande 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écu-
              tion. 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'in-
              terpréteur, bash lui affecte le chemin d'accès complet  à  l'in-
              terpré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 se-
                        conde.
              %[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  à  affi-
              chage  de  nombres  entiers. Trois chiffres au plus peuvent être
              affichés après la virgule ; toute valeur supérieure à 3 sera mo-
              difié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 mi-
              nutes, 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 ca-
              ractè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 com-
              mande  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 in-
              terpré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  arri-
              vé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  re-
              lances de tâches suspendues. Aucune ambiguïté n'est possible, si
              plusieurs tâches commencent par la chaîne saisie, la tâche à la-
              quelle  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 four-
              nie 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  carac-
              tère  de développement de l'historique, celui qui indique le dé-
              but d'un développement d'historique (normalement « ! »). Le  se-
              cond  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 ta-
       bleau. 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éga-
       tifs.

       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 in-
       dicé (consultez COMMANDES INTERNES DE L'INTERPRÉTEUR  ci-dessous).  de-
       clare -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 utili-
       sant les commandes internes declare et readonly.  Les  attributs  s'ap-
       pliquent à 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éces-
       sitent rien d’autre que chaîne. Chaque valeur de la liste est  dévelop-
       pée  en  utilisant  tous  les  développements de l'interpréteur décrits
       ci-dessous dans DÉVELOPPEMENTS. Lors de l'affectation de tableaux indi-
       cés,  si  les crochets et les indices facultatifs sont fournis, les af-
       fectations ont lieu en conséquence ; sinon l'indice  de  l'élément  af-
       fecté  est  le  dernier indice affecté plus un. L'indexation commence à
       zéro.

       Lors de l'affectation à un tableau associatif, les mots d'une  affecta-
       tion composée peuvent être soit des affectations pour lesquelles un in-
       dice 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  ab-
       sente 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 in-
       dice 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[in-
       dice]}. 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 va-
       riable 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'éva-
       lue  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 ta-
       bleau si nécessaire.

       Une variable tableau est considérée configurée si une valeur a été  af-
       fecté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  assi-
       gné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[in-
       dice] 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. un-
       set 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  as-
       sociatif,  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  sup-
       prime pas le tableau lui-même.

       Lors  de  l'utilisation d'un nom de variable avec un indice comme argu-
       ment 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  sou-
       haité, 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éci-
       ser  un  tableau  associatif. Si les deux options sont fournies, -A est
       prioritaire. La commande interne read accepte une option -a pour affec-
       ter 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éveloppe-
       ment 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évelop-
       pement du tilde, des paramètres, des variables et arithmétique, et sub-
       stitution de commande (effectuée de la gauche vers la droite) ;  décou-
       page 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  protec-
       tion  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éve-
       loppement  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  faculta-
       tif,  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 fai-
       sant de gauche à droite.

       Plusieurs développements d'accolades peuvent être imbriqués. Les résul-
       tats  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  es-
       saiera  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éveloppe-
       ment  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 acco-
       lades  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'ac-
       colades  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éveloppe-
       ment 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 acco-
       lades 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'in-
       terpré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éper-
       toires  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 satisfai-
       sant les conditions d'affectations de variable (comme décrit  précédem-
       ment  dans PARAMÈTRES) quand elles apparaissent comme arguments de com-
       mandes simples. Bash ne le fait pas en mode POSIX sauf  pour  les  com-
       mandes 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 acco-
       lades facultatives mais permettant d'éviter le développement de la  va-
       riable  à  partir  de  caractères la suivant immédiatement et qui pour-
       raient ê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’in-
              terpré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'indirec-
       tion 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éca-
       nisme le développement indirect. La valeur est sujette au développement
       de  tildes  et de paramètres, à la substitution de commande ou au déve-
       loppement arithmétique. Si le paramètre est un nameref,  le  développe-
       ment  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  ap-
              proprié  si  aucun  mot  n'est fourni) est affiché sur la sortie
              d'erreur standard et l'interpréteur termine, s'il n'est pas  in-
              teractif. 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'éten-
              dant  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  ca-
              ractères, et le développement est constitué des caractères entre
              le début et cette position. Remarquez que  les  positions  néga-
              tives doivent être séparées des deux-points par au moins une es-
              pace pour éviter d’être confondues avec le développement de :-.

              Si le paramètre est @ ou *, le résultat correspond à longueurpa-
              ramètres  positionnels  commençant au début. Une valeur négative
              de début est considérée relative au plus grand  paramètre  posi-
              tionnel  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  à  ${pa-
              ramètre[début]}.  Une valeur négative de début est prise relati-
              vement à la valeur maximale de  l'indice  du  tableau  considéré
              plus  un. C’est une erreur de développement si longueur est éva-
              lué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 pa-
              ramè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  va-
              riables  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  ta-
              bleau, 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éve-
              loppement 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 carac-
              tè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 ta-
              bleau 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 sup-
              pression  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 position-
              nel 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  ap-
              pliquée à chaque élément du tableau tour à tour et le développe-
              ment 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éve-
              loppé et la plus longue portion correspondant au motif est  rem-
              placée  par la chaîne. La chaîne est sujette au développement du
              tilde, des paramètres et des variables, au développement  arith-
              métique,  à la substitution de commande et de processus, et à la
              suppression des protections. La mise en correspondance est  réa-
              lisé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évelop-
              pé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  remplace-
              ments  dans le développement de la partie protégée, y compris le
              remplacement des chaînes stockées dans les variables de l'inter-
              pré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 utilisa-
              teurs doivent faire attention si la chaîne  est  protégée  entre
              des  guillemets doubles pour éviter des interactions non souhai-
              té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évelop-
              pement 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 substi-
              tution  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 substi-
              tution 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 minus-
              cules correspondant à ce motif  en  majuscules ;  l'opérateur  ,
              convertit  les lettre majuscules correspondant à ce motif en mi-
              nuscules. Les développements ^^ et ,, convertissent tous les ca-
              ractères correspondant à leur valeur développée ; les développe-
              ments ^ 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 ta-
              bleau 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éra-
              teur 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  majus-
                     cule, 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 pa-
                     ramètre avec des suites de caractères de  protection  par
                     contre-oblique développée comme avec le mécanisme de pro-
                     tection $'...'.
              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'agis-
                     sait d'une chaîne  d'invite  (consultez  INVITES  ci-des-
                     sous).
              A      Le  développement  est une chaîne sous la forme d'une af-
                     fectation ou d'une commande declare qui, lorsqu'elle  est
                     évaluée,  recréera paramètre avec sa valeur et ses attri-
                     buts.
              K      Produit une version potentiellement protégée de la valeur
                     de  l'argument,  sauf  qu'il  affiche les valeurs des ta-
                     bleaux indicés  et  associatifs  comme  une  séquence  de
                     paires  clé/valeur  protégées (consultez Tableaux ci-des-
                     sus).
              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 indi-
              cé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 envi-
       ronnement de sous-interpréteur et en remplaçant la substitution de com-
       mande  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  ra-
       pide $(< 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 pro-
       té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 arith-
       mé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'ex-
       pression 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  af-
       fiche 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  fi-
       chier.  Le  nom  de  ce fichier est passé en argument à la commande ac-
       tuelle 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  uti-
       lisant  ces  caractères comme terminaisons de champ. Si IFS est inexis-
       tante  ou   si   sa   valeur   est   exactement   <espace><tab><change-
       ment_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ésul-
       tat  des  développements précédents sont ignorés, et toute suite de ca-
       ractè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 carac-
       tè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 carac-
       tè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  va-
       leurs,  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'' de-
       vient -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 appa-
       raît  et n'est pas protégé, le mot est considéré comme un motif et rem-
       placé par une liste, classée par ordre alphabétique,  de  noms  de  fi-
       chiers  correspondant  à  ce motif (consultez Motifs génériques ci-des-
       sous). 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 cor-
       respondance n'est trouvée, un message d'erreur est affiché et  la  com-
       mande n'est pas exécutée. Si l'option d'interpréteur nocaseglob est ac-
       tivé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_COL-
       LATE. 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 corres-
       pondance avec les noms de fichier « . » et « .. », le motif doit  débu-
       ter  par un « . (par exemple, « .? »), même si l'option dotglob existe.
       Si l'option d'interpréteur globskipdots est activée, les  noms  de  fi-
       chier  « . » 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 des-
       cription 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 GLOBI-
       GNORE est supprimé de la liste des correspondances. Si l'option nocase-
       glob  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ésac-
       tivé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 carac-
       tè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  in-
                     cluses,  en  utilisant les suites de collations et le jeu
                     de caractères des paramètres linguistiques régionaux  ac-
                     tuels,  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 carac-
                     tères dans les expressions d’intervalle et les caractères
                     inclus  dans  l'intervalle  sont  déterminés  par les pa-
                     ramètres linguistiques régionaux actuels et par  les  va-
                     leurs  des  variables  de  l'interpréteur  LC_COLLATE  et
                     LC_ALL si existantes. Pour obtenir l’interprétation  tra-
                     ditionnelle  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 der-
                     nier caractère de l'ensemble. Un ] peut faire  partie  du
                     motif de correspondance à condition d’être le premier ca-
                     ractè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  ac-
                     tuels) que le caractère c.

                     Entre  [  et ], la syntaxe [.symbole.] correspond au sym-
                     bole 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 in-
                     diqués.
              +(liste-motif)
                     Correspond  à une ou plusieurs occurrences des motifs in-
                     diqués.
              @(liste-motif)
                     Correspond à une occurrence exactement des  motifs  indi-
                     qué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 mo-
       tifs développés mis en correspondance sont  analysés  correctement,  il
       faut  s'assurer  que  extglob est activé avant d'analyser les construc-
       tions 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'in-
       terpré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-mo-
       tif débute par un « . ». Comme précédemment, « . » tout seul a une  si-
       gnification particulière lors de la correspondance avec des noms de fi-
       chiers.

       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éveloppe-
       ments 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  des-
       cripteurs  de  fichier dans l'environnement d’exécution actuel de l'in-
       terpréteur. Les opérateurs de redirection suivants peuvent précéder  ou
       apparaître  n'importe  où  dans  une commande simple ou suivre une com-
       mande. 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 des-
       cripteur 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 var-
       redir_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 fi-
       chier 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  sui-
       vantes,  à moins qu'il en soit fait état autrement, est soumis au déve-
       loppement des accolades, du tilde, des paramètres et des  variables,  à
       la  substitution  de commande, au développement arithmétique, à la sup-
       pression 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 cor-
                     respondante.
              /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  cor-
                     respondante.

       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 surve-
       nir avec les descripteurs de fichier utilisés en interne  par  l'inter-
       préteur.

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

   Redirection d'entrée
       Une redirection d'entrée conduit à l'ouverture en lecture avec le  des-
       cripteur de fichier numéro n du fichier dont le nom résulte du dévelop-
       pement 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 com-
       mande 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 re-
       direction sera tentée même si le fichier dont le nom résulte  du  déve-
       loppement du mot existe.

   Ajout d'une sortie redirigée
       La redirection de la sortie de cette façon conduit à l'ouverture du fi-
       chier dont le nom résulte du développement du mot pour ajouter au  des-
       cripteur  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  stan-
       dard (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'er-
       reur standard :

              &>mot
       et
              >&mot

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

              >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-des-
       sous) 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 (des-
       cripteur 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 docu-
       ment_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 pa-
       ramè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 do-
       cuments 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 va-
       riables, à 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 re-
       direction  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 sor-
       tie. 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 rediri-
       gé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  fi-
       chier  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  fi-
       chier 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 descrip-
       teur 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éve-
       loppé 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écursive-
       ment 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 inter-
       actif sauf si l'option expand_aliases de l'interpréteur est  créée  par
       la commande shopt (consultez la description de shopt dans COMMANDES IN-
       TERNES 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ète-
       ment 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écu-
       tion 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  asso-
       cié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  de-
       viennent  les  paramètres  positionnels  pendant  son exécution. Le pa-
       ramè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 ex-
       ceptions suivantes : les captures de DEBUG et RETURN (consultez la des-
       cription  de  la commande interne trap dans COMMANDES INTERNES DE L'IN-
       TERPRÉ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 ac-
       tuelle 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 modi-
       fier  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 visibi-
       lité  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 ac-
       tuelles. La valeur de la variable vue par une fonction dépend de sa va-
       leur  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  dyna-
       miques :  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'in-
       terpré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 in-
       vocations  de fonctions qui dépassent la limite forceront toute la com-
       mande à 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 pa-
       ramè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 facultati-
       vement 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'ex-
       pressions arithmétiques (consultez les commandes internes  let  et  de-
       clare ainsi que Développement arithmétique). L'évaluation est effectuée
       en utilisant des entiers de longueur fixe, sans vérification du  débor-
       dement.  Néanmoins, la division par 0 est capturée et marquée comme une
       erreur. Les opérateurs, leur priorité, leur associativité et  leur  va-
       leur  sont  identiques  à ceux du langage C. La liste suivante d'opéra-
       teurs 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 in-
       existante 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 carac-
       tère non chiffre est requis, les chiffres supérieurs à 9 sont représen-
       tés  par les lettres minuscules, les lettres majuscules, le « @ » et le
       « _ », dans cet ordre. Si la base est inférieure ou égale à 36, les mi-
       nuscules  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  com-
       mandes  internes  test et [ pour vérifier les attributs d'un fichier et
       effectuer des comparaisons arithmétiques ou sur des chaînes.  Les  com-
       mandes  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 le-
       quel 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éri-
              phé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  fi-
              chier_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 confi-
              guré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 confi-
              guré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  lexico-
              graphique.

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

       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 expres-
              sions arithmétiques (consultez ÉVALUATION  ARITHMÉTIQUE  ci-des-
              sus).

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 va-
              riables (ceux qui précèdent le nom de la commande) et les  redi-
              rections sont conservées pour un traitement ultérieur.

       2.     Les mots qui ne sont ni des affectations de variables ni des re-
              directions sont développés. S'il reste des mots après  le  déve-
              loppement,  le premier mot est considéré comme le nom d'une com-
              mande et les suivants comme ses arguments.

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

       4.     Le  texte  suivant  le signe = de chaque affectation de variable
              est sujet au développement du tilde, des paramètres, à  la  sub-
              stitution  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 af-
       fectations de variables modifient l'environnement actuel de l'interpré-
       teur. Dans le cas de commandes de ce type (celles qui  consistent  uni-
       quement  en affectations et en redirections), les affectations sont ef-
       fectuées avant les redirections. Sinon les variables  sont  ajoutées  à
       l'environnement de la commande exécutée et n'affectent pas l'environne-
       ment 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 er-
       reur 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 ac-
       tions 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  FONC-
       TIONS.  Si le nom n'est pas celui d'une fonction, l'interpréteur le re-
       cherche 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écu-
       table 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'inter-
       pré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 in-
       terpré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 pre-
       miè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'exploita-
       tion 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'en-
       semble 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'en-
              vironnement 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  ar-
              riè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 environ-
       nement  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 modifi-
              cations 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  affec-
       ter 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'envi-
       ronnement 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 environ-
       nement.  Les  commandes export et declare -x permettent d'ajouter ou de
       supprimer des paramètres ou des fonctions de l'environnement. Si la va-
       leur 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  aug-
       menté  temporairement,  en  la faisant précéder des affectations de pa-
       ramètres, comme nous l'avons vu ci-dessus dans PARAMÈTRES. Ces affecta-
       tions 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'inter-
       pré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évelop-
       pement 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 pa-
       ramè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  com-
       mande interne exit.

SIGNAUX
       Quand  bash  fonctionne  de façon interactive, en absence de toute cap-
       ture, 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 SIGT-
       TIN, SIGTTOU et SIGTSTP.

       Les commandes externes lancées par bash ont les  gestionnaires  de  si-
       gnaux 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  ar-
       rière-plan  ignorent les signaux SIGINT et SIGQUIT en plus des gestion-
       naires hérités. Les commandes exécutées en tant que résultat d'une sub-
       stitution  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  de-
       vrait  ê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  in-
       terpréteur de commandes de connexion interactif termine.

       Lorsque  bash  attend qu'une commande se termine et qu'il reçoit un si-
       gnal 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'édi-
              tion) 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  possibi-
       lité  grâce à l'action conjointe du pilote de terminal du noyau de sys-
       tè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 affi-
       chée avec la commande jobs. Quand bash lance une tâche de  façon  asyn-
       chrone (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 re-
       donne 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  si-
       gnale  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'in-
       terpré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  in-
       terne  set est activée, bash signalera de telles modifications immédia-
       tement. 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'inter-
       pré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 interca-
       laire, 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 in-
                     sé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 va-
                     riable 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  carac-
                     tè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 dif-
       férents : le numéro d'historique d'une commande correspond à  sa  posi-
       tion  dans  la file d'historique qui peut contenir des commandes relues
       depuis cette liste (consultez HISTORIQUE ci-dessous), alors que le  nu-
       mé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  descrip-
       tion  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'op-
       tion +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 indi-
       quer 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 no-
       té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  pres-
       sant 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'utili-
       sation d'un argument négatif pour une commande agissant  dans  un  sens
       donné (par exemple kill-line) conduit cette commande à agir dans la di-
       rection 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  circu-
       laire.

   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 in-
       existante, 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/in-
       putrc. Lorsqu'un programme utilisant la bibliothèque readline  démarre,
       le fichier d'initialisation est lu et les raccourcis clavier et les va-
       riables sont mis en place. Il n'y a que quelques constructions  élémen-
       taires  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 inpu-
       trc 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'asso-
       cier. 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-argu-
       ment, 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 dif-
       fère  de  touche  ci-dessus en ce que les chaînes notant une suite com-
       plè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-ar-
       gument, C-x C-r à la fonction re-read-init-file et ESC [ 1 1 ~ à  l'in-
       sertion 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 in-
       terne 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 in-
       putrc 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 va-
       leurs 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 équiva-
       lentes à 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 quel-
              conque sur l'affichage, aussi elle devrait consister  uniquement
              en séquences d'échappement du terminal. Elle est envoyée au ter-
              minal avant l'affichage du texte dans la zone active. Cette  va-
              riable 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 des-
              cription 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-re-
              gion-start-color et rétablit l'apparence « normale » de  l'affi-
              chage  du  terminal  après l'affichage de texte dans la zone ac-
              tive. Cette chaîne ne doit pas occuper l'emplacement d'un carac-
              tè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 ja-
              mais d'alarme. Si configurée à  visible,  readline  utilise  une
              alarme  visuelle s'il y en a une disponible. Si configurée à au-
              dible, 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-pre-
              fix », 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-com-
              ment  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  pos-
              sibles  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 équi-
              valents 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  pos-
              sible-completions.  Elle peut être configurée à toute valeur en-
              tière positive. Si le nombre de complètements possibles est  su-
              périeur  ou  égal à la valeur de cette variable, readline deman-
              dera à 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  sup-
              primant  le huitième bit et en préfixant un caractère de protec-
              tion (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 linguis-
              tique 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 permet-
              tant, 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  pro-
              tection  \1  et \2 pour ouvrir et fermer les séquences de carac-
              tè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 cur-
              seur et la marque correspond à une position de curseur sauvegar-
              dé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 va-
              leur 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 read-
              line 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 ef-
              facé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'af-
              fichage  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 read-
              line la fixe à On si le paramètre linguistique régional contient
              des  caractères  8 bits. Cette variable dépend du paramètre lin-
              guistique régional LC_CTYPE et peut  être  modifiée  si  le  pa-
              ramè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  com-
              mande.  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 modi-
              fie 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 com-
              plé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 millise-
              conde, 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é modi-
              fié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  com-
              plé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  fi-
              chiers.  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  carac-
              tè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 configu-
              ration  par défaut est Off, mais readline la fixe à On si le pa-
              ramè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 in-
              terne 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 corres-
              pondants 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 modi-
              fié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ète-
              ment  possibles conduisent à l'affichage immédiat des correspon-
              dances 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  au-
              cun  complètement  partiel possible (les complètements possibles
              ne partagent pas de préfixe commun) conduisent à l'affichage im-
              mé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 indi-
              quant 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  com-
              plètement  lors  de l'insertion d'une unique correspondance dans
              la ligne. Elle n'est utilisée que lors d'un complètement  effec-
              tué  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 com-
              mande. 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  ca-
              ractè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  in-
              sertion.  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. Utili-
              ser 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 ter-
              minal 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 af-
              fichant les complètements possibles.

   Constructions conditionnelles de readline
       Readline  implémente un mécanisme inspiré des fonctionnalités de compi-
       lation conditionnelle du préprocesseur C qui permet d'effectuer le  pa-
       ramé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 read-
              line. Le texte du test, après n’importe quel opérateur de compa-
              raison, 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 rac-
                     courcis clavier spécifiques au terminal,  comme  associer
                     des  suites de touches produites par des touches de fonc-
                     tion 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 per-
                     met,  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éra-
                     teurs de comparaison permis sont =, ==, et !=. Le nom  de
                     la  variable  doit être séparé de l'opérateur par une es-
                     pace ; l'opérateur peut être séparé de la valeur à droite
                     par une espace. Les variables de chaîne ainsi que les va-
                     riables 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, ter-
              mine 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 in-
       cré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'histo-
       rique  désiré. Les caractères se trouvant dans la variable isearch-ter-
       minators servent à terminer une recherche incrémentale. Si  aucune  va-
       leur  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 res-
       taurer 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'histo-
       rique, 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  accep-
       tera 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'histo-
       rique.  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 com-
       mandes sans suite de touche les accompagnant ne sont pas associées  par
       défaut. Dans les descriptions suivantes, le curseur (« point ») se rap-
       porte à 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 ac-
              tuelle de readline n'est pas supérieure à la longueur  de  l'in-
              vite plus la largeur de l'écran.
       clear-display (M-C-l)
              Effacer l'écran et, si possible, le tampon de défilement du ter-
              minal, 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 re-
              montant 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'his-
              torique 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, reve-
              nir à 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émen-
              tale 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'utili-
              sateur.
       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 der-
              nier 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 succes-
              sifs 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évelop-
              pement 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éveloppe-
              ments 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'ap-
              peler, 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 ca-
              ractè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 as-
              socié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 pa-
              ragraphe 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 expli-
              cite  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 carac-
              tè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 as-
              socié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  cur-
              seur.
       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 iden-
              tiques à 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  iden-
              tiques à 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 tam-
              pon 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  igno-
              ré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 comp-
              teur 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 cur-
              seur. Bash effectue le complètement en considérant tour  à  tour
              le texte comme une variable (s'il commence par $), un nom d'uti-
              lisateur (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  au-
              raient é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  pos-
              sibles.  Des  exécutions répétées de menu-complete parcourent la
              liste des complètements possibles, en insérant chaque correspon-
              dance  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 posi-
              tions 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  com-
              mandes  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  corres-
              pondant 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éveloppe-
              ment 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 correspon-
              dants. Le comportement est non défini si x est  déjà  en  minus-
              cule.
       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 équi-
              valent à 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 argu-
              ment 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 cur-
              seur 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 sui-
              vante de ce caractère. Un argument négatif recherche les  occur-
              rences 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  occur-
              rences suivantes.
       skip-csi-sequence
              Lire  suffisamment  de caractères pour englober une suite multi-
              touche 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 pro-
              duisent de telles suites n'auront pas d'effet à moins d'être ex-
              plicitement associées à une commande readline, au lieu d'insérer
              des caractères parasites dans le tampon d'édition.  N'est  asso-
              cié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 ar-
              gument numérique est fourni, cette commande agit comme une  bas-
              cule :  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'in-
              terpré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éve-
              loppement 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  va-
              leurs  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  ar-
              gument  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 utili-
       sant 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 com-
       mande 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ète-
       ments  possibles pour le mot. Si le mot de commande est un chemin d'ac-
       cès complet, on cherche en premier lieu une spécification de  complète-
       ment 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  au-
       cun  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 com-
       plè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éve-
       loppement 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 à com-
       plé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'inter-
       pré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  va-
       riable 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 carac-
       tè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éve-
       loppement 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 corres-
       pondants 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 affec-
       té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  argu-
       ment  ($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  ac-
       tuelle. 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, in-
       diqué 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 rem-
       placé 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'in-
       terpréteur nocasematch est activée, la mise en correspondance  est  ef-
       fectué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  corres-
       pondance 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éper-
       toires  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 à com-
       plete  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  program-
       mable  forcent  readline à ajouter une barre oblique pour compléter les
       noms qui sont des liens symboliques vers des répertoires, selon la  va-
       leur de la variable mark-directories de readline, indépendamment du pa-
       ramé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écu-
       té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écifica-
       tion de complètement associée à la commande sur laquelle  le  complète-
       ment  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 dyna-
       miquement  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écifica-
       tions  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'in-
       terpré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 va-
       riables (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 HISTFILE-
       SIZE. 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 fi-
       chier 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  horoda-
       tages  de la ligne d'historique précédente. Ces horodatages sont facul-
       tativement affichés en fonction de la valeur de la  variable  HISTTIME-
       FORMAT.  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'INTER-
       PRÉTEUR  ci-dessous), les lignes sont ajoutées au fichier d'historique,
       sinon le fichier est écrasé. Si HISTFILE est inexistante ou si  le  fi-
       chier d'historique n'est pas accessible en écriture, l'historique n'est
       pas sauvegardé. Si la variable HISTTIMEFORMAT est configurée, les horo-
       datages sont écrits dans le fichier d'historique, repérés par le carac-
       tère de commentaire d'historique, afin d'être conservés au fur et à me-
       sure des sessions de l'interpréteur. Le caractère de commentaire d'his-
       torique est utilisé pour distinguer l'horodatage des autres  lignes  de
       l'historique.  Après la sauvegarde de l'historique, le fichier d'histo-
       rique 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  sauvegar-
       dé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 cmd-
       hist, si activée,  conduit  l'interpréteur  à  essayer  de  sauvegarder
       chaque ligne d'une commande multiligne dans le même élément de l'histo-
       rique, 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'histo-
       rique 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'effec-
       tuent 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 com-
       mandes, 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 per-
       mettent  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  plu-
       sieurs  mots séparés par des métacaractères et encadrés par des guille-
       mets sont considérés comme un unique mot. Le développement de  l'histo-
       rique 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'his-
       torique, 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'his-
       torique, 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  in-
       terne  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 cor-
       rection. L'option -p de la commande interne history peut servir à  exa-
       miner  ce  qu'une  substitution donnera avant de l'employer réellement.
       L'option -s de la commande interne history permet  d'ajouter  des  com-
       mandes  à  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'horoda-
       tage 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 com-
       mande dans la file d'historique. Sauf s'il s'agit d'une référence abso-
       lue,  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 com-
              mande 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 change-
              ment 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-des-
              sous).
       !#     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éne-
       ment. 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  com-
              mande.
       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 der-
       niè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  fu-
              tures.
       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éli-
              miteur  à la place de /. Le dernier délimiteur est facultatif si
              c'est le dernier caractère de la ligne d'événement.  Le  délimi-
              teur  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  corres-
              pondance à 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/an-
              cien/nouveau/ ») ou « :& ». Si utilisé avec « :s », tout délimi-
              teur 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 pa-
       ragraphe 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  com-
       mençant  par  - sans avoir besoin de --. Les autres commandes internes,
       qui acceptent des arguments mais qui ne sont pas  déclarées  explicite-
       ment  comme acceptant des options, considèrent les arguments commençant
       par - comme des options non valides, donc -- est obligatoire pour  évi-
       ter 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  der-
              niè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 exa-
              mine  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 argu-
              ments sont fournis, ils sont transmis dans les paramètres  posi-
              tionnels  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 res-
              tauré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  ve-
              nant  de  la source modifie la capture de DEBUG, la nouvelle va-
              leur 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 no-
              tion 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 de-
                     vant ê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 read-
                     line.
              -p     Afficher les noms des fonctions readline  et  leurs  rac-
                     courcis de façon à pouvoir les relire.
              -P     Afficher  les  noms  des fonctions readline et leurs rac-
                     courcis.
              -s     Afficher les suites de touches readline associées aux ma-
                     cros  et  les chaînes correspondantes, de façon à pouvoir
                     les relire.
              -S     Afficher les suites de touches readline associées aux ma-
                     cros 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  va-
                     leurs.
              -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'inser-
                     tion et du point d'insertion sauvegardé (la marque)  res-
                     pectivement.  L'interpréteur  affecte tout argument numé-
                     rique fourni par l'utilisateur à la variable READLINE_AR-
                     GUMENT.  S'il  n'y a pas d'argument, la variable n'existe
                     pas. Si la commande exécutée modifie les valeurs de READ-
                     LINE_LINE, READLINE_POINT ou READLINE_MARK, ces nouvelles
                     valeurs seront prises en considération dans l'état d'édi-
                     tion.
              -X     Afficher  toutes les suites de touches associées aux com-
                     mandes 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  indi-
              qué,  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 su-
              pé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 en-
              tier positif est fourni comme expr, caller affiche le numéro  de
              ligne, le nom du sous-programme et le nom de fichier source cor-
              respondant à la position dans la pile d'appels  d'exécution  ac-
              tuelle. 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'inter-
              pré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 re-
              cherche 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 symbo-
              liques 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 sup-
              primant  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 asso-
              cié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éus-
              sit, 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  chan-
              gement.  La  valeur renvoyée est vrai si le changement de réper-
              toire a réussi, faux sinon.

       command [-pVv] commande [arguments ...]
              Exécuter la commande avec les arguments indiqués, mais  en  sup-
              primant le processus habituel de recherche des commandes. Seules
              les commandes internes ou les commandes trouvées dans  PATH  se-
              ront  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  com-
              mande  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 di-
              rectement à 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écifica-
              tions  de complètement. L'option -D indique que les options res-
              tantes 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éalable-
              ment  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  ac-
              tions  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 com-
              mande. 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 argu-
              ments  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ète-
              ment,  lorsqu'un complètement de mot est tenté, est décrit above
              under Programmable Completion.

              Les autres options, si indiquées, ont  les  significations  sui-
              vantes.  Les  arguments  des options -G, -W et -X (et, si néces-
              saire, les options -P et -S) devraient être protégées pour  évi-
              ter 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 com-
                      portement  des spécifications de complètement au-delà de
                      la simple production de  complètement.  option-complète-
                      ment 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  com-
                              plè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 com-
                              plè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 protec-
                              tion des noms de fichier est par défaut).
                      nosort  Indiquer à readline de ne pas  trier  par  ordre
                              alphabétique  la  liste  des  complètements pos-
                              sibles.
                      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 ac-
                              tivé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  in-
                              terne help.
                      hostname
                              Noms de machine tels qu'ils sont extraits du fi-
                              chier indiqué par la variable de  l'interpréteur
                              HOSTFILE.
                      job     Noms  de tâche si le contrôle des tâches est ac-
                              tif. 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 com-
                      plè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'inter-
                      pré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éve-
                      loppé pour produire les complètements possibles.
              -P préfixe
                      préfixe est ajouté au début de chaque complètement  pos-
                      sible 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  carac-
                      tè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 carac-
                      tères de l'interpréteur dans la valeur de IFS. Les  com-
                      plètements  possibles  sont les éléments de la liste ré-
                      sultante qui correspondent au mot en cours de  complète-
                      ment.
              -X motif_filtre
                      motif_filtre  est un motif utilisé pour le développement
                      des chemins. Il est appliqué à la  liste  des  complète-
                      ments  possibles  produite  par les options et arguments
                      précédents et chaque complètement  correspondant  à  mo-
                      tif_filtre  est  supprimé  de la liste. Un ! au début du
                      motif_filtre inverse le motif ; dans ce cas,  tout  com-
                      plètement  qui ne correspond pas à motif_filtre est sup-
                      primé.

              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 au-
              cun  nom  n'est  fourni. Si aucune option n'est donnée, afficher
              les options de complètement pour chaque nom ou pour le complète-
              ment  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  com-
              plètement  essayé sur une commande pour laquelle aucun complète-
              ment n'a été préalablement défini. L'option -E indique  que  les
              options  fournies  devraient s'appliquer au complètement de com-
              mande « vide » ; c'est-à-dire le  complètement  essayé  sur  une
              ligne  vide.  L'option  I  indique que les options fournies res-
              tantes 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 com-
              mande.

              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écifi-
              cation 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  re-
              prend  à 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émen-
              taires, à 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 se-
              ront affichés. Si aucune autre option n'est fournie avec -p, de-
              clare 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éfini-
              tions de fonctions : seuls le nom de la fonction et  ses  attri-
              buts  sont affichés. Si l'option d'interpréteur extdebug est ac-
              tivé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écu-
              té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  va-
                     riable.
              -l     Quand  cette variable contient une valeur, toutes les ma-
                     juscules seront converties en minuscules. L'attribut  ma-
                     juscule est désactivé.
              -n     Donner  à  chaque  nom l’attribut nameref, le rendant une
                     référence de nom vers une autre variable. Cette autre va-
                     riable 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’attri-
                     but -n lui-même, sont réalisées sur la variable  référen-
                     cé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  tra-
                     cées héritent des captures de DEBUG et RETURN de l'inter-
                     préteur appelant. L'attribut trace n'a pas de  significa-
                     tion spéciale pour les variables.
              -u     Quand  cette variable contient une valeur, toutes les mi-
                     nuscules seront converties en majuscules. L'attribut  mi-
                     nuscule est désactivé.
              -x     Marquer  les  noms pour qu'ils soit exportés dans l'envi-
                     ronnement 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 fonc-
              tion, declare et typeset rendent local chaque nom, comme avec la
              commande local sauf si l'option -g est fournie. Si un nom de va-
              riable 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  va-
              riable  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'af-
              ficher 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 sup-
              primé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 re-
                     pré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'in-
                     dice 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 ac-
              tives. 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'op-
              tion -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'argu-
              ment tâche restreint les opérations aux tâches en cours d'exécu-
              tion. 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'op-
              tion d'interpréteur xpg_echo peut  être  utilisée  dynamiquement
              pour  déterminer  si echo développe ou non par défaut ces carac-
              tè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 hexa-
                     décimale est HHHH (un à quatre chiffres hexadécimaux) ;
              \UHHHHHHHH
                     le caractère Unicode (ISO/IEC 10646) dont la valeur hexa-
                     dé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  in-
              ternes  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 indi-
              qué ou si l'option -p est fournie, une liste des  commandes  in-
              ternes  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ésactiva-
              tions. 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. Au-
              cun 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 four-
              nie,  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'in-
              terpré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 indi-
              quée, les éventuelles redirections  sont  mises  en  place  dans
              l'interpréteur  actuel et l'état renvoyé est 0. S'il y a une er-
              reur 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  fonc-
              tions.  Si  aucun nom n'est donné ou si l'option -p est fournie,
              une liste de noms de toutes les variables  exportées  est  affi-
              ché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 ac-
              tuelle). Sur la liste, une première ou une dernière de valeur  0
              est  équivalente  à  -1,  et -0 est équivalent à la commande ac-
              tuelle (habituellement la commande fc) ; autrement, 0 est  équi-
              valent  à  -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 der-
              niè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 uti-
              lisé. 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 in-
              terpré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 der-
              niè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 com-
              mande 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 ac-
              tuelle. 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 ac-
              tivé, 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'en-
              semble  des caractères d'options à reconnaître ; si un caractère
              est suivi par un deux-points, l'option est censée avoir un argu-
              ment,  qui devrait en être séparé par une espace. Les caractères
              deux-points et le point d'interrogation ne peuvent pas être uti-
              lisé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  argu-
              ment 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 va-
              riable 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  va-
              riable  OPTARG. Si getopts fonctionne en mode silencieux, le ca-
              ractère d'option est placé dans OPTARG et aucun message de diag-
              nostic 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 diag-
              nostic 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  trou-
              vé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 che-
              min d'accès n'est effectuée et le fichier est utilisé comme che-
              min  d'accès complet pour la commande. L'option -r conduit l'in-
              terpréteur à oublier tous les emplacements  mémorisés.  L'option
              -d  conduit l'interpréteur à oublier tous les emplacements mémo-
              risés de chaque nom. Si l'option -t est fournie, le chemin d'ac-
              cès  complet  de  chaque  nom correspondant est affiché. Si plu-
              sieurs 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 va-
              leur  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  in-
              ternes.  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'his-
              torique, 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  HISTTIME-
              FORMAT  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'horo-
              datage ainsi mis en forme de la ligne d'historique. Si un  argu-
              ment  fichier  est  fourni,  il est utilisé comme nom de fichier
              d'historique ; sinon la valeur de HISTFILE est utilisée. Les op-
              tions, 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 à re-
                     bours 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 posi-
                     tions 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'histo-
                     rique.
              -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'his-
                     torique est supprimée avant que les arguments  ne  soient
                     ajoutés.

              Si la variable HISTTIMEFORMAT existe, les informations d'horoda-
              tage associées à chaque élément  de  l'historique  sont  écrites
              dans  le fichier d'historique, repérées par le caractère de com-
              mentaire 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 ho-
              rodatages  de  la  ligne d'historique précédente. La valeur ren-
              voyé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  op-
              tions 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 proces-
                     sus 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  infor-
              mations  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  in-
              diqué, les noms des signaux correspondant aux arguments sont af-
              fichés et l'état renvoyé est 0. L'argument état_final  de  l'op-
              tion  -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 op-
              tion  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  la-
              quelle local est invoquée : les options de l'interpréteur, modi-
              fiées en utilisant la commande interne  set  dans  la  fonction,
              sont  restaurées  à  leur valeur originale quand la fonction re-
              donne la main. La restauration est effectuée comme si une  série
              de  commandes  set  avaient été exécutées pour restaurer les va-
              leurs qui étaient en place avant la  fonction.  Sans  opérandes,
              local affiche la liste des variables locales sur la sortie stan-
              dard. 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  va-
              riable 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 ta-
              bleau par défaut. Les options, si fournies, ont  les  significa-
              tions suivantes :
              -d     Le  premier caractère de délimiteur est utilisé pour ter-
                     miner 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 à af-
              fecter  et la ligne à affecter à cet élément sont fournis en ar-
              guments 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 ta-
              bleau avant de lui affecter des valeurs.

              mapfile termine avec succès sauf si une option ou un de ses  ar-
              guments  n'est  pas  valable,  ou  si tableau n'est pas valable,
              n'est pas un tableau indicé ou si  son  affectation  est  impos-
              sible.

       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  affi-
                     chée  par  dirs, en comptant depuis la gauche à partir de
                     zéro. Par exemple : ``popd +0'' enlève le premier  réper-
                     toire, ``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 in-
              terne 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 trou-
              vée, si la pile de répertoires est vide ou si une pile de réper-
              toires 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écifica-
              tions  de  format, qui conduisent chacun à l'affichage des argu-
              ments 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  ma-
                     niè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'argu-
                     ment 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 for-
                     mat pour strftime(3). L'argument correspondant est un en-
                     tier 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 argu-
                     ment n’est indiqué, la conversion se comporte comme si -1
                     avait été fourni. C’est une exception au comportement ha-
                     bituel 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  carac-
              tè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 ar-
              guments.  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é four-
              nies. 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  argu-
              ments, 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  ac-
              tuel.  Le chemin ne contiendra pas de liens symboliques si l'op-
              tion -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 des-
              cripteur de fichier df fourni en argument à l'option -u,  décou-
              pé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  carac-
              tè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 sui-
              vantes :
              -a tableau
                     Les mots sont affectés aux indices successifs  d'une  va-
                     riable tableau de nom tableau, en commençant à 0. tableau
                     est détruit avant que de nouvelles valeurs ne soient  af-
                     fectées. Les autres arguments nom sont ignorés.
              -d délimiteur
                     Le  premier caractère de délimiteur est utilisé pour ter-
                     miner 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  biblio-
                     thèque  readline  (consultez READLINE above) est utilisée
                     pour obtenir la ligne. Readline  utilise  les  configura-
                     tions  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'édi-
                     tion.
              -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élimi-
                     teur  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 ca-
                     ractère final de changement de ligne, avant d'essayer  de
                     lire  toute nouvelle saisie. L'invite est affichée seule-
                     ment si l'entrée vient d'un terminal.
              -r     La contre-oblique n'agit pas comme un caractère  de  pro-
                     tection.  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  ter-
                     minal, 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  termi-
                     nal, 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 don-
                     né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  (au-
              quel  cas  le code renvoyé est plus grand que 128), en cas d’er-
              reur d’affectation (comme une affectation de variable à une  va-
              riable  en lecture seule) ou si un descripteur de fichier incor-
              rect est fourni en argument de -u.

       readonly [-aAf] [-p] [nom[=mot] ...]
              Les noms indiqués reçoivent un attribut lecture seule ; les  va-
              leurs de ces noms ne pourront plus être modifiées par des affec-
              tations 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  argu-
              ment  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  op-
              tions  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  fonc-
              tion.

       return [n]
              Forcer une fonction à arrêter son exécution et à renvoyer la va-
              leur 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  ges-
              tionnaire  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 com-
              mande . (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  argu-
              ment  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 va-
              riables 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'inter-
              préteur sont affichées. La sortie est triée en fonction des  pa-
              ramè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 im-
                      mé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'in-
                      terpréteur ne se termine pas si la commande  qui  échoue
                      fait  partie d'une liste de commandes suivant immédiate-
                      ment 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'ex-
                      ception 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 ENVIRONNE-
                      MENT  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é,  au-
                      cune  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 ren-
                      voie 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  proces-
                      sus  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 uti-
                      lisé 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  in-
                              teractif,  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'inter-
                              préteur ``IGNOREEOF=10'' a été exécutée (consul-
                              tez 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 pipe-
                              line  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 PO-
                              SIX.  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 uti-
                              lisée par read -e est modifiée également.
                      xtrace  Identique à -x.
                      Si  -o  est  fournie  sans nom_d_option, les valeurs ac-
                      tuelles 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 affi-
                      ché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  GLOBI-
                      GNORE, 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  ap-
                      pliqué  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  effec-
                      tifs à 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 er-
                      reurs  lors du développement des paramètres. Si un déve-
                      loppement 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,  com-
                      mande  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 mo-
                      difient 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  RE-
                      TURN ne sont normalement pas héritées dans de tels cas.
              --      Si  aucun  argument  ne suit cette option, alors les pa-
                      ramètres positionnels  sont  détruits.  Sinon,  les  pa-
                      ramè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 op-
                      tions -x et -v sont désactivées. S'il n'y a pas  d'argu-
                      ments, 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 tou-
              jours 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  pa-
              ramètres  positionnels  ne sont pas modifiés. L'état renvoyé est
              strictement positif si n est supérieur à $# ou strictement néga-
              tif, 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  cha-
              cune  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 plu-
                     sieurs arguments nom_opt sont indiqués  avec  -q,  l'état
                     renvoyé  est zéro si tous les nom_opt sont activés ; dif-
                     fé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'in-
              terpré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 va-
                      riable dont la valeur est le répertoire visé.
              cdspell Si existante, les erreurs minimes de frappe dans un com-
                      posant  du  répertoire en argument de la commande cd se-
                      ront corrigées. Les erreurs corrigées  sont  les  inver-
                      sions d'un caractère, un caractère manquant et un carac-
                      tè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écu-
                      ter. 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 in-
                      terpré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 tou-
                      jours 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 com-
                      mandes 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 compa-
                      tibilité de l'interpréteur (consultez MODE DE COMPATIBI-
                      LITÉ 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 ca-
                      ractères qui sera protégé dans les noms de fichiers com-
                      plé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 pro-
                      tégés non plus. Ce n’est actif que si bash  utilise  des
                      contre-obliques  pour  protéger des noms de fichier com-
                      plétés. Cette variable est définie par  défaut,  ce  qui
                      est  le  comportement de bash par défaut jusqu’à la ver-
                      sion 4.2.

              direxpand
                      Si existante, bash remplace les noms de  répertoire  par
                      les résultats de développement de mots lors du complète-
                      ment 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 expli-
                      citement, même si dotglob existe.

              execfail
                      Si  existante,  un interpréteur non interactif ne termi-
                      nera pas s'il ne peut exécuter un fichier indiqué en ar-
                      gument  de la commande interne exec. Un interpréteur in-
                      teractif 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 dispo-
                      sitions 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  compor-
                      tement prévu pour l'utilisation du traçage est activé :

                      1.     L'option  -F  de  la commande interne declare af-
                             fiche 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 com-
                             mande 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 com-
                             mandes internes . ou source), l'interpréteur  si-
                             mule 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  substi-
                             tution  de commande, les fonctions de l'interpré-
                             teur et les  sous-interpréteurs  appelés  avec  (
                             command  )  héritent des captures de DEBUG et RE-
                             TURN.

                      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  ${pa-
                      ramètres} entre guillemets doubles. Cette option est ac-
                      tivée par défaut.

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

              force_fignore
                      Si  existante,  les suffixes indiqués par la variable de
                      l'interpréteur FIGNORE conduiront des mots à être  igno-
                      rés  lors du complètement de mot, même si les mots igno-
                      ré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  com-
                      portent  comme  avec les paramètres régionaux tradition-
                      nels 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  ja-
                      mais  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  fi-
                      chiers  et  zéro ou plusieurs répertoires et sous-réper-
                      toires. Si le motif est suivi de  /,  seuls  les  réper-
                      toires 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 fi-
                      chier 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'environne-
                      ment d'interpréteur actuel.

              lithist Si  existante  et  si  l'option cmdhist est activée, les
                      commandes multilignes sont  sauvegardées  dans  l'histo-
                      rique 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 va-
                      leur 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 comporte-
                      ment  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érifi-
                      cation, le message « Le courrier  dans  fichier_de_cour-
                      rier a été lu. » est affiché.

              no_empty_cmd_completion
                      Si  existante  et  si  readline est utilisée, bash n'es-
                      saiera 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  fi-
                      chiers  d'une  façon insensible à la casse lors du déve-
                      loppement des chemins (consultez Développement des  che-
                      mins above).

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

              noexpand_translation
                      Si  existante,  bash entoure les résultats de la traduc-
                      tion 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  acti-
                      vés. Cette option est activée par défaut.

              progcomp_alias
                      Si  existante et si le complètement programmable est ac-
                      tivé, bash traite un nom de commande qui n'a pas de com-
                      plètement comme un possible alias et tente un développe-
                      ment d'alias. S'il possède un alias, bash tente un  com-
                      plè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 com-
                      mande, 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  mes-
                      sage  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  inter-
              préteur  dont  le  contrôle des tâches n'est pas activé, ne peut
              pas être suspendu ; l'option -f permet de surpasser ce comporte-
              ment et force sa suspension. L'état renvoyé est 0, sauf si l'in-
              terpré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  sui-
              vant,  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 pre-
                     mier  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  argu-
                     ments. Si le premier argument est !, la valeur est la né-
                     gation du test binaire utilisant les  deuxième  et  troi-
                     siè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  argu-
                     ments restants, le test binaire utilisant les deuxième et
                     troisième arguments. Si le premier argument  est  exacte-
                     ment  ( et le quatrième argument est exactement ), le ré-
                     sultat est le test binaire des deuxième et troisième  ar-
                     guments.  Sinon la condition est analysée et évaluée sui-
                     vant 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'in-
              terpré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éini-
              tialisé à 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, com-
              mande 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 extde-
              bug 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 fi-
              nal  différent de zéro, soumis aux conditions suivantes. La cap-
              ture 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  pi-
              peline  sauf  la  dernière, ou si la valeur renvoyée par la com-
              mande 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 va-
              lable, 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'in-
              terpré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 com-
              mande  est  disponible  dans  la  table de hachage, -p et -P af-
              fichent 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écu-
              table  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 aug-
              menté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 signi-
              fient, respectivement, la limitation stricte actuelle, la  limi-
              tation flexible actuelle et l'absence de limitation. Si la limi-
              tation est omise, la valeur actuelle de la  limitation  flexible
              pour la ressource est affichée, à moins que l'option -H soit in-
              diqué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  in-
                     existante)
              -q     Le nombre maximal d'octets dans les files de messages PO-
                     SIX
              -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  ac-
                     cordé à 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 en-
                     fants
              -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 in-
              diqué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  limita-
              tion.

       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 symbo-
              lique, 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 rap-
              porte à 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 va-
              riables et fonctions détruites sont supprimées  de  l'environne-
              ment  transmis aux commandes ultérieures. Si l'une des variables
              BASH_ALIASES,  BASH_ARGV0,  BASH_CMDS,  BASH_COMMAND,  BASH_SUB-
              SHELL, BASHPID, COMP_WORDBREAKS, DIRSTACK, EPOCHREALTIME, EPOCH-
              SECONDS, 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 indi-
              qué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 at-
              tend 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 four-
              nie, 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 ren-
              voyer  son  état  quand il change. Si id indique un processus ou
              une tâche inexistants, l'état renvoyé est 127. Si wait  est  in-
              terrompu  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'inter-
       pré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'ex-
       cluent 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 migra-
       tions 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 ver-
       sion 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'expres-
       sion  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 ver-
       sion 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 com-
       patNN, 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 de-
       vraient 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 ver-
       sions 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 cor-
                     respondance (=~) d'une expression rationnelle de la  com-
                     mande [[ 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'in-
                     terpréteur se comporte comme  s'il  recevait  l'interrup-
                     tion,  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 ver-
                     sion 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éve-
                     loppement  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  suppres-
                     sion 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 acco-
                     lade 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éini-
                     tialisé, aussi break ou continue dans cette fonction  in-
                     terrompt  ou poursuit la boucle dans le contexte de l'ap-
                     pel. 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 ter-
                     minaison du sous-interpréteur. Bash-5.0 et  les  versions
                     ultérieures  réinitialisent l'état de la boucle pour évi-
                     ter la terminaison.
              •      Les affectations de variables précédant des commandes in-
                     ternes  comme  export et readonly qui configurent des at-
                     tributs, 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 com-
                     patibilité 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  ver-
                     sions  de bash antérieures à bash-5.1 affichaient un mes-
                     sage d’information à cet effet même quand  elles  produi-
                     saient  une sortie qui pouvait être réutilisée en entrée.
                     Bash-5.1 supprime ce message quand l'option -l est  four-
                     nie.

       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 stan-
       dard. 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 ar-
              gument 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  restric-
              ted_shell.

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

       When a command that is found to be a shell script is executed (see COM-
       MAND  EXECUTION  above), rbash supprime toute restriction dans l'inter-
       pré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  Utili-
       ties, 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 in-
              teractifs
       ~/.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 « philoso-
       phique » 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 ori-
       ginale 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écifica-
       tions 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  Chris-
       tophe  Blaess  <ccb@club-internet.fr>,  Thierry  Vignaud <tvignaud@man-
       driva.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-pierregi-
       raud@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⟩.

GNU Bash 5.2                   19 septembre 2022                       BASH(1)

Generated by dwww version 1.15 on Sat Jun 29 00:40:45 CEST 2024.