Index des commandes Aide

Man pages

-->
    
BASH(1)                                                                BASH(1)



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

SYNOPSIS
       bash [options] [fichier]

COPYRIGHT
       Bash is Copyright (C) 1989-2005 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  aux  spécifications  IEEE
       sur  les interpréteurs de commandes et les outils POSIX (groupe de tra‐
       vail de l’IEEE 1003.2). Bash peut être configuré pour être conforme aux
       spécifications POSIX par défaut.

OPTIONS
       En  plus  des options d’interpréteur monocaractères documentées dans la
       description de la commande interne set, bash accepte les options  suiv‐
       antes lors de son appel :

       -c chaîne Si  l’option  -c est présente, les commandes sont lues depuis
                 la chaîne fournie. S’il y a des arguments  après  la  chaîne,
                 ils  sont affectés aux paramètres positionnels, en commençant
                 par $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 (voir APPEL plus bas).
       -r        Si l’option -r est présente, l’interpréteur devient restreint
                 (voir INTERPRÉTEUR RESTREINT plus bas).
       -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 tout en appelant un  interpréteur
                 interactif.
       -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  sujettes  à  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  (voir  plus  bas  COMMANDES
                 INTERNES  DE  L’INTERPRÉTEUR ). 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  sor‐
                 tie  standard.  Si  l’option  d’appel  est  +O, la sortie est
                 affichée dans un format réutilisable en entrée.
       --        Deux caractères -- indiquent la fin  des  options  et  dé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 (voir plus bas la description de l’option extde‐
              bug de la commande interne shopt) et le traçage des fonctions de
              l’interpréteur  (voir  plus  bas  la  description de l’option -o
              functrace de la commande interne set).
       --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 (voir APPEL
              plus bas).

       --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 de configuration générale /etc/profile ni
              les  fichiers   d’initialisation   personnels   ~/.bash_profile,
              ~/.bash_login,  ni ~/.profile. Par défaut, bash lit ces fichiers
              lorsqu’il est appelé comme interpréteur de commandes de  connex‐
              ion (voir APPEL plus bas).

       --norc Ne  pas  lire  ni  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 le standard POSIX 1003.2, en
              ce qui concerne les options dont l’action par défaut diffère  de
              ce standard (mode posix).

       --restricted
              L’interpréteur  devient  restreint  (voir INTERPRÉTEUR RESTREINT
              plus bas).

       --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  ficher  est  affecté  à  $0  et  les  arguments restants aux autres
       paramètres positionnels. Bash lit et exécute les  commandes  depuis  ce
       fichier,  puis  termine.  L’état  final  de bash est l’état final de la
       dernière commande exécutée dans le script. Si aucune commande  n’a  été
       exécutée,  l’état final est 0. Une tentative est d’abord faite de trou‐
       ver le fichier dans le répertoire courant et, si  aucun  fichier  n’est
       trouvé,  l’interpréteur cherche le script dans les répertoires contenus
       dans PATH.

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

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

       Le  paragraphe  suivant décrit comment bash exécute ses fichiers d’ini‐
       tialisation. Si un quelconque de ces fichiers  existe  mais  n’est  pas
       accessible  en  lecture,  bash signale une erreur. Les tildes sont rem‐
       placés par des noms de fichiers comme décrit plus bas  dans  Développe‐
       ment du tilde dans le paragraphe DÉVELOPPEMENTS.

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

       Lorsqu’un  interpréteur  de commandes de connexion termine, bash lit et
       exécute les commandes du fichier ~/.bash_logout, s’il existe.

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

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

       Si bash est appelé sous le nom sh, il essaye d’imiter  le  comportement
       de démarrage des versions historiques de sh aussi fidèlement que possi‐
       ble, tout en restant conforme aux spécifications POSIX.  Lorsqu’il  est
       appelé  comme  interpréteur de commandes de connexion interactif ou non
       interactif  avec  l’option  --login,  il  essaye  d’abord  de  lire  et
       exécuter, dans cet ordre, les commandes de /etc/profile puis de ~/.pro‐
       file. L’option --noprofile peut être utilisée  pour  empêcher  ce  com‐
       portement.  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  pas  de
       lire  et  d’exécuter  des  commandes  d’un  quelconque 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 le  standard  POSIX  pour  les  fichiers  de
       démarrage.  Dans  ce mode, les interpréteurs interactifs développent la
       variable ENV et les commandes  sont  lues  et  exécutées  à  partir  du
       fichier  dont  le  nom  est  la  valeur développée. Aucun autre fichier
       d’initialisation n’est lu.

       Bash tente de déterminer s’il est exécuté  par  le  démon  lançant  les
       interpréteurs de commandes distants, généralement rshd. Si bash conclut
       qu’il est exécuté  par  rshd,  il  lit  et  exécute  les  commandes  de
       /etc/bash.bashrc  et  ~/.bashrc  si ces fichiers existent et sont lisi‐
       bles. 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 n’appelle généralement pas l’interpréteur avec ces
       options ni ne permet de les spécifier.

       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, la variable SHELLOPTS,  si  présente  dans  l’environ‐
       nement,  est ignorée et l’identifiant de l’utilisateur effectif est mis
       à celui de l’utilisateur réel. Si l’option -p est fournie à l’appel, le
       comportement  au démarrage est le même mais l’identifiant d’utilisateur
       effectif n’est pas modifié.

DÉFINITIONS
       Les définitions suivantes sont utilisées dans toute la suite  ce  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  ou  le
              soulignement  (underscore),  commençant  par  une  lettre  ou un
              soulignement. On s’y réfère également sous le terme  identifica‐
              teur.
       métacaractère
              Un caractère qui, non protégé, sépare les mots. Un de ceux-ci :
              |  & ; ( ) < > space tab
       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  simple  (voir  plus  bas  GRAMMAIRE  DE L’INTERPRÉTEUR ) soit le
       troisième mot d’une commande case ou for :

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

GRAMMAIRE DE L’INTERPRÉTEUR
   Commandes simples
       Une  commande simple est une suite d’affectations facultatives de vari‐
       ables, 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 spécifie 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.

   Conduites
       Une conduite (pipeline) est une  suite  d’une  ou  plusieurs  commandes
       séparées par le caractère tube |. Le format d’une conduite est :

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

       La  sortie  standard  de  la  commande_1  est  connectée  par un tube à
       l’entrée standard de la commande_2. Cette connexion est effectuée avant
       toute  redirection  spécifiée  par la commande elle-même (voir REDIREC‐
       TIONS plus bas).

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

       Si le mot réservé time précède une conduite, les temps  passés  par  le
       programme  en  modes utilisateur et système sont indiqués quand la con‐
       duite se termine. L’option -p modifie le format de  sortie  pour  celui
       spécifié  par POSIX. La variable TIMEFORMAT peut contenir une chaîne de
       format indiquant comment les informations de chronométrage doivent être
       affichées ; consultez plus bas la descriptions de TIMEFORMAT dans Vari‐
       ables de l’interpréteur.

       Chaque commande dans une  conduite  est  exécutée  comme  un  processus
       indépendant (c’est-à-dire dans un sous-interpréteur).

   Listes
       Une  liste est une suite d’une ou plusieurs conduites séparées par l’un
       des opérateurs ;, &, && ou ││ et facultativement terminée par  l’un  au
       choix des ;, & ou <saut 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 sauts 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 ren‐
       voyé est 0. Les commandes séparées par un ; sont exécutées  successive‐
       ment, 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 opérateurs de contrôle && et ││ indiquent respectivement des listes
       de ET et des listes de OU. Une liste ET est de la forme

              commande_1 && commande_2

       commande_2 est exécutée si, et seulement si, commande_1 renvoie un état
       final de zéro.

       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 de ET et de 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 :

       (liste)
              liste est exécutée dans  un  sous-interpréteur  (voir  plus  bas
              ENVIRONNEMENT  D’EXÉCUTION  DES COMMANDES ). Les affectations de
              variables et les commandes  internes  qui  affectent  l’environ‐
              nement  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’interpréteur en cours. liste doit se terminer par un caractère
              de saut 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 une espace.

       ((expression))
              L’expression est évaluée selon les règles décrites plus bas dans
              ÉVALUATION ARITHMÉTIQUE.  Si la valeur arithmétique de l’expres‐
              sion est différente de zéro, l’état renvoyé est 0 ; sinon l’état
              renvoyé  est  1.  Ceci  est exactement équivalent à let "expres‐
              sion".

       [[ expression ]]
              Renvoie un état de 0 ou 1 selon  l’évaluation  de  la  condition
              expression. Les conditions sont composées de primitives décrites
              plus bas dans CONDITIONS.  Le découpage en mots et le développe‐
              ment  des chemins ne sont pas effectués sur les mots entre [[ et
              ]] ; le développement des tildes, des paramètres, des variables,
              le développement arithmétique, la substitution de commande et de
              processus,  ainsi  que  la  suppression  des  protections   sont
              effectués.  Les opérateurs conditionnels comme -f ne doivent pas
              être protégés afin d’être reconnus comme primitives.

              Quand les opérateurs == et != sont utilisés, la chaîne placée  à
              droite  de  l’opérateur est considérée comme étant un motif dont
              la correspondance est recherchée selon les règles décrites  plus
              bas  dans  Motifs génériques. 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 alphabétiques.  La  valeur  renvoyée  est  0  si  les
              chaînes  correspondent  (==) (ou respectivement ne correspondent
              pas (!=) au motif et 1 sinon. Toute partie du  motif  peut  être
              protégée pour la forcer à 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 et est mise en correspondance en conséquence
              (comme  avec  regex(3)).  La  valeur renvoyée est 0 si la chaîne
              correspond au motif et 1 si elle ne correspond pas. Si l’expres‐
              sion  rationnelle  n’est  pas syntaxiquement correcte, la valeur
              renvoyée de  l’expression  conditionnelle  est  2.  Si  l’option
              d’interpréteur  nocasematch  est  activée, la mise en correspon‐
              dance  est  effectuée  sans  tenir  compte  de  la  casse.   Les
              sous-chaînes  mises  en correspondance avec des sous-expressions
              entre parenthèses dans  l’expression  rationnelle  sont  sauveg‐
              ardées dans la variable tableau BASH_REMATCH. L’élément d’indice
              0 de BASH_REMATCH est la partie de  la  chaîne  correspondant  à
              l’expression  rationnelle  complète.  L’élément  d’indice  n  de
              BASH_REMATCH est la partie de la chaîne correspondant à la  nème
              sous-expression entre parenthèses.

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

              ( 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  (voir  PARAMÈTRES plus
              bas). L’état renvoyé est l’état final de  la  dernière  commande
              exécutée.  Si le développement des éléments suivant in conduit à
              une liste vide, aucune commande n’est exécutée et l’état renvoyé
              est 0.

       for (( expr1 ; expr2 ; expr3 )) ; do liste ; done
              L’expression  arithmétique  expr1  est d’abord évaluée selon les
              règles  décrites  plus   bas   sous   ÉVALUATION   ARITHMÉTIQUE.
              L’expression  arithmétique expr2 est ensuite évaluée répétitive‐
              ment 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’expres‐
              sion arithmétique expr3  est  évaluée.  Si  une  quelconque  des
              expressions est omise, elle est considérée comme s’évaluant à 1.
              La valeur renvoyée est l’état final de la dernière commande dans
              liste qui est exécutée ou faux si une quelconque 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. 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 (voir
              PARAMÈTRES plus bas). L’invite PS3 est affichée et une ligne est
              lue  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  se termine. Toute autre
              valeur lue conduit à mettre à vide la variable nom. 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 mêmes règles que pour le développe‐
              ment des chemins (voir plus bas Développement des  chemins).  Le
              mot  est  développé  en  utilisant le développement du tilde, le
              développement des paramètres et des variables,  la  substitution
              arithmétique,  la  substitution  de commande, la substitution de
              processus  et  la  suppression  des  protections.  Chaque  motif
              examiné est développé en utilisant le développement du tilde, le
              développement des paramètres et des variables,  la  substitution
              arithmétique,  la substitution de commande et la substitution de
              processus. Si l’option d’interpréteur nocasematch  est  activée,
              la  mise en correspondance est effectuée sans tenir compte de la
              casse des caractères alphabétiques. Quand une correspondance est
              trouvée, la liste associée est exécutée. Dès qu’un motif correct
              a été trouvé, il n’y a plus d’autre essai. L’état final est zéro
              si  aucun  motif  ne correspond. Sinon il est l’état final de la
              dernière commande exécutée dans la liste.

       if liste; then liste; [ elif liste; then liste; ] ... [ else  liste;  ]
       fi
              La liste du if est exécutée. Si son  état  final  est  zéro,  la
              liste  du  then est exécutée. Sinon, chacune des listes des elif
              est exécutée tour à tour et si son état final est zéro, la liste
              du  then  associé est exécutée et la commande 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; do liste; done
       until liste; do liste; done
              La commande while répète la liste du do  tant  que  la  dernière
              commande  de la liste du while renvoie un état final de zéro. La
              commande until est identique à la commande while,  sauf  que  le
              test  est  inversé ;  la  liste  du  do est exécutée tant que la
              dernière commande de la liste 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 du do ou zéro  si
              aucune commande n’a été exécutée.

   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 :

       [ function ] nom () commande-composée [redirection]
              Ceci définit une fonction possédant le  nom  mentionné.  Le  mot
              réservé  function  est  facultatif.  S’il  est  fourni, les par‐
              enthèses sont facultatives. Le corps de la fonction est la  com‐
              mande  composée commande-composée (voir Commandes composées plus
              haut). Cette commande est généralement une  liste  de  commandes
              entre  {  et  },  mais  peut  être  une quelconque des commandes
              décrites dans Commandes composées plus  haut.  La  commande-com‐
              posée est exécutée chaque fois que nom est spécifié comme le nom
              d’une commande normale. Toutes redirections  (voir  REDIRECTIONS
              plus  bas)  spécifiées  lorsqu’une  fonction  est  définie  sont
              effectuées lorsque la fonction est exécutée. L’état final  d’une
              définition  de  fonction est zéro, à moins qu’une erreur de syn‐
              taxe se produise ou qu’une fonction en lecture seule existe déjà
              avec le même nom. Lorsque la fonction est exécutée, l’état final
              est celui de la dernière commande exécutée dans le corps  de  la
              fonction. (Voir FONCTIONS plus bas.)

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  (voir  plus  bas  COMMANDES INTERNES DE L’INTERPRÉTEUR ), un mot
       commençant par # conduira à 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 interact‐
       ifs.

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

       Tous les métacaractères décrits plus haut dans DÉFINITIONS ont des sig‐
       nifications 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  (voir  plus bas DÉVELOPPEMENT DE L’HISTORIQUE ), le caractère
       de développement de l’historique, généralement  !,  doit  être  protégé
       pour éviter le développement de l’historique.

       Il y a trois mécanismes de protection : le caractère d’échappement, les
       guillemets simples (« single quote ») et les guillemets doubles (« dou‐
       ble quote »).

       Un   caractère   contre-oblique  (\)  non  protégé,  est  le  caractère
       d’échappement. Il préserve la valeur  littérale  du  caractère  qui  le
       suit,  à  l’exception du <saut de ligne>. Si un couple \<saut de ligne>
       apparaît et si la contre-oblique n’est pas elle-même protégée, l’ensem‐
       ble  \<saut  de  ligne>  est  considéré comme une continuation de ligne
       (c’est-à-dire qu’il est supprimé du flot 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‐
       ment  simple ne peut pas être placé entre deux guillemets simples, même
       s’il est précédé d’une contre-oblique.

       Encadrer des caractères entre des guillemets doubles préserve la valeur
       littérale  de  chacun  des  caractères  sauf  $,  ‘,  \  et, lorsque le
       développement de l’historique est activé, !. Les caractères $ et ‘ con‐
       servent  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 <saut de
       ligne>. Un guillemet double peut être  protégé  entre  deux  guillemets
       doubles  en  le faisant précéder d’une contre-oblique. S’il est activé,
       le développement de l’historique sera effectué, à moins qu’un !   appa‐
       raissant  entre  guillemets  doubles  ne  soit  protégé  par  une  con‐
       tre-oblique. La contre-oblique précédant le ! n’est pas supprimée.

       Les caractères  spéciaux  *  et  @  ont  des  significations  spéciales
       lorsqu’ils  se  trouvent  entre des guillemets doubles (voir PARAMÈTRES
       plus bas).

       Les mots de la forme $’chaîne’ sont traités spécialement.  Le  mot  est
       développé  en  chaîne  avec  les caractères protégés par contre-oblique
       remplacés comme spécifié par le standard ANSI C. Les suites  d’échappe‐
       ment par contre-oblique, si présentes, sont décodées comme suit :
              \a     alerte (alarme)
              \b     effacement arrière (backspace)
              \e     caractère d’échappement
              \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
              \nnn   le  caractère 8 bits dont la valeur octale est nnn (de un
                     à trois chiffres)
              \xHH   le caractère 8 bits dont la valeur  hexadécimale  est  HH
                     (un à deux symboles 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  ($)
       conduira  à  la traduction de la chaîne selon le paramètre linguistique
       régional en vigueur. Si le paramètre linguistique régional courant  est
       C  ou POSIX, le symbole dollar est ignoré. Si la chaîne est traduite et
       remplacée, le résultat est protégé par des guillemets doubles.

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 plus bas,
       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
       (voir declare plus bas dans COMMANDES INTERNES DE L’INTERPRÉTEUR ).

       Un  paramètre est créé si une valeur lui a été affectée. La chaîne vide
       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 (voir plus
       bas COMMANDES INTERNES DE L’INTERPRÉTEUR ).

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

              nom=[valeur]

       Si aucune valeur n’est indiquée, une chaîne  vide  est  affectée  à  la
       variable.  Toutes  les valeurs sont sujettes au développement du tilde,
       des paramètres et des variables, à  la  substitution  de  commande,  au
       développement  arithmétique  et  à la suppression des protections (voir
       DÉVELOPPEMENTS plus bas). Si une variable a  son  attribut  integer  de
       mis,  alors  la valeur est soumise à l’évaluation arithmétique, même si
       la syntaxe $((...)) n’est pas utilisée (voir Développement arithmétique
       plus  bas).  Le  découpage en mots n’est pas effectué, à l’exception de
       "$@" comme expliqué plus bas dans Paramètres spéciaux. Le développement
       des  chemins  n’est  pas  effectué.  Les affectations peuvent également
       apparaître comme argument des  commandes  internes  suivantes :  alias,
       declare, typeset, export, readonly et local.

       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 vari‐
       able.  Lorsque  l’opérateur  +=  est  appliqué  à  une  variable   dont
       l’attribut  integer (entier) a été mis, la valeur est évaluée comme une
       expression arithmétique et additionnée à la valeur actuelle de la vari‐
       able  qui est également évaluée. Lorsque += est appliqué à une variable
       tableau en utilisant l’affectation composée (voir Tableaux  plus  bas),
       la valeur de la variable n’est pas détruite (comme elle l’est lorsqu’on
       utilise =) et les nouvelles valeurs sont ajoutées au tableau,  en  com‐
       mençant  à l’indice maximum du tableau plus un. Lorsque l’opérateur est
       appliqué à une variable de type chaîne, la  valeur  est  développée  et
       concaténée à la valeur de la variable.

   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 (voir FONCTIONS plus bas).

       Un  paramètre  positionnel  constitué  de  plusieurs chiffres doit être
       encadré par des accolades lors de son  développement  (voir  DÉVELOPPE‐
       MENTS plus bas).

   Paramètres spéciaux
       L’interpréteur   traite   plusieurs   paramètres   spécifiquement.  Ces
       paramètres peuvent uniquement être consultés, il n’est  pas  permis  de
       leur affecter une valeur.
       *      Se  développe  en  l’ensemble  des paramètres positionnels, com‐
              mençant par le premier. Quand le développement se produit  entre
              des guillemets doubles, * se transforme en un seul mot constitué
              de la valeur de tous les paramètres positionnels séparés par  le
              premier caractère de la variable spéciale IFS.  C’est-à-dire que
              "$*" est équivalent à "$1c$2c...", où c est le premier caractère
              de  la  valeur  de la variable IFS.  Si IFS est inexistante, les
              paramètres sont séparés par des espaces. Si IFS  est  vide,  les
              paramètres sont accolés sans séparateurs.
       @      Se  développe  en  l’ensemble  des paramètres positionnels, com‐
              mençant par le premier. Quand  le  développement  a  lieu  entre
              guillemets doubles, chaque paramètre se développe en un mot dis‐
              tinct. C’est-à-dire que "$@" est équivalent à "$1" "$2" ....  Si
              le développement des guillemets doubles survient dans un mot, le
              développement du premier paramètre est accolé à la première par‐
              tie  du  mot  d’origine et le développement du dernier paramètre
              est accolé à la dernière partie du mot d’origine. Quand il n’y a
              pas  de paramètres positionnels, "$@" et $@ ne se développent en
              rien (c’est-à-dire qu’ils sont simplement éliminés).
       #      Correspond  au  nombre  de  paramètres  positionnels,  en   base
              décimale.
       ?      Se  développe en l’état de la dernière conduite exécutée au pre‐
              mier plan.
       -      Est  remplacé  par  la  liste  des  options  de   l’interpréteur
              indiquées  durant  l’appel, configurées avec la commande interne
              set ou celles créées par  l’interpréteur  lui-même  (comme  avec
              l’option -i).
       $      Se    transforme    en    PID   de   l’interpréteur.   Dans   un
              sous-interpréteur (), il se transforme en PID de  l’interpréteur
              et non pas du sous-interpréteur.
       !      Se  transforme  en  PID  de la commande (asynchrone) exécutée en
              arrière-plan le plus récemment.
       0      Se développe en le  nom  de  l’interpréteur  ou  du  script.  Ce
              paramètre  est  créé lors de l’initialisation de l’interpréteur.
              Si bash est appelé avec un fichier de commandes,  $0  correspond
              au  nom de ce fichier. Si bash est lancé avec l’option -c, alors
              $0 contient le premier argument, s’il y en a un, après la chaîne
              de  commandes à exécuter. Sinon, ce paramètre contient le nom de
              fichier utilisé pour appeler bash, comme indiqué par  l’argument
              zéro.
       _      Au  lancement  de  l’interpréteur,  contient  le  chemin d’accès
              absolu utilisé pour appeler l’interpréteur ou le script en cours
              d’exécution  tel qu’il est passé dans l’environnement ou dans la
              liste des arguments. Devient le dernier argument de la  commande
              précédente,  après  développement.  Mis  aussi au chemin d’accès
              complet de chaque commande exécutée et se retrouve dans  l’envi‐
              ronnement  exporté  à cette commande. Lors de la vérification de
              l’arrivée de courriel, contient le nom du fichier de courriel en
              cours de consultation.

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

       BASH   Se  développe en chemin d’accès complet à l’instance courante de
              bash.
       BASH_ARGC
              Une variable de type tableau dont les valeurs sont le nombre  de
              paramètres  de  chaque  trame  de la pile d’appel d’exécution de
              l’interpréteur courant. Le nombre  de  paramètres  du  sous-pro‐
              gramme courant (fonction de l’interpréteur ou 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  (voir  plus  bas la description de l’option
              extdebug de la commande interne shopt).
       BASH_ARGV
              Une variable de type tableau contenant tous les paramètres de la
              pile  d’appel  d’exécution de l’interpréteur courant. Le dernier
              paramètre du dernier sous-programme est au sommet de  la  pile ;
              le  premier  paramètre  de l’appel initial est en bas. Lorsqu’un
              sous-programme est exécuté, les paramètres fournis  sont  placés
              dans  BASH_ARGV. L’interpréteur crée BASH_ARGV seulement dans le
              mode de traçage étendu (voir plus bas la description de l’option
              extdebug de la commande interne shopt).
       BASH_COMMAND
              La  commande  en  cours  d’exécution  ou  sur  le  point  d’être
              exécutée, à moins que l’interpréteur n’exécute une commande à la
              suite d’une capture, auquel cas c’est la commande s’exécutant au
              moment de la capture.
       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  correspondant  à  chacun  des
              éléments de FUNCNAME. ${BASH_LINENO[$i]} est  le  numéro  de  la
              ligne  dans le fichier source où ${FUNCNAME[$ifP]} a été appelé.
              Le nom du fichier source correspondant  est  ${BASH_SOURCE[$i]}.
              Utilisez LINENO pour obtenir le numéro de ligne courant.
       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. Cette variable est en lecture seule.
       BASH_SOURCE
              Une variable de type tableau dont les éléments sont les noms des
              fichiers  source  correspondants  aux  éléments  de  la variable
              tableau FUNCNAME.
       BASH_SUBSHELL
              Incrémenté chaque fois qu’un sous-interpréteur ou qu’un environ‐
              nement de sous-interpréteur est engendré. La valeur initiale est
              0.
       BASH_VERSINFO
              Une variable de type  tableau  protégée  en  écriture  dont  les
              éléments  représentent  la  version  de  cette instance de bash.
              Cette valeur est affectée aux éléments du tableau comme suit :
              BASH_VERSINFO[0]        Le   numéro   majeur   de   la   version
                                      (release).
              BASH_VERSINFO[1]        Le  numéro  mineur  de  la version (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  (p.  ex.,
                                      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
              courant du curseur. Cette variable n’est disponible que dans les
              fonctions  de  l’interpréteur  appelées  par   les   outils   de
              complètement  programmables (voir Complètement programmable plus
              bas).

       COMP_LINE
              La ligne de commande courante. Cette variable  n’est  disponible
              que dans les fonctions de l’interpréteur appelées par les outils
              de complètement programmables  (voir  Complètement  programmable
              plus bas).

       COMP_POINT
              L’indice  de la position courante du curseur relatif au début de
              la commande courante. Si la position courante du curseur  est  à
              la  fin de la commande courante, la valeur de cette variable est
              égale à ${#COMP_LINE}. Cette variable n’est disponible que  dans
              les  fonctions  de  l’interpréteur  et  les  commandes  externes
              appelées par les  outils  de  complètement  programmables  (voir
              Complètement programmable plus bas).

       COMP_WORDBREAKS
              Le  jeu  de  caractères  que  la bibliothèque readline considère
              comme séparateurs de mots  lors  du  complètement  de  mots.  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 (voir Tableaux plus bas) consistant
              en  des mots individuels de la ligne de commande courante. Cette
              variable  n’est   disponible   que   dans   les   fonctions   de
              l’interpréteur   appelées   par   les   outils  de  complètement
              programmables (voir Complètement programmable plus bas).

       DIRSTACK
              Une variable de type tableau (voir Tableaux plus bas)  représen‐
              tant  le  contenu  courant de la pile de répertoires. Les réper‐
              toires 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 courant. Si DIRSTACK est détruite, elle perd ses pro‐
              prié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  d’une  quelconque
              des  fonctions de l’interpréteur en cours d’exécution. L’élément
              le plus bas est « main ». Cette variable  n’existe  que  si  une
              fonction  de l’interpréteur est en cours d’exécution. Les affec‐
              tations de FUNCNAME n’ont  aucun  effet  et  renvoient  un  état
              d’erreur.  Si  FUNCNAME  est  détruite, elle perd ses propriétés
              spéciales, même si elle est recréée par la suite.

       GROUPS Une variable de type tableau contenant la liste des groupes dont
              l’utilisateur est membre. Les affectations de GROUPS n’ont aucun
              effet et renvoient un état d’erreur.  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.  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 mis au nom de la machine courante.

       HOSTTYPE
              Automatiquement mis à une chaîne qui décrit 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  mis  à  une chaîne décrivant le type du système
              sur lequel bash s’exécute, dans le format standard de  GNU  pro‐
              cesseur-compagnie-système.   La  valeur  par  défaut  dépend  du
              système.

       OLDPWD Le répertoire de travail précédent comme mis par la commande cd.

       OPTARG La  valeur  du  dernier argument d’option traité par la commande
              interne  getopts  (voir   plus   bas   COMMANDES   INTERNES   DE
              L’INTERPRÉTEUR ).

       OPTIND L’indice  du prochain argument à traiter par la commande interne
              getopts (voir plus bas COMMANDES INTERNES DE L’INTERPRÉTEUR ).

       OSTYPE Automatiquement  mis  à  une  chaîne  qui  décrit   le   système
              d’exploitation  sur  lequel bash s’exécute. La valeur par défaut
              dépend du système.

       PIPESTATUS
              Une variable de type tableau (voir Tableaux plus bas)  contenant
              une  liste  des  états  finaux  des  processus  exécutés dans la
              conduite exécutée la plus récemment au premier  plan  (qui  peut
              éventuellement contenir une seule commande).

       PPID   L’identifiant du processus parent de l’interpréteur. Cette vari‐
              able est en lecture seule.

       PWD    Le répertoire de travail courant comme mis par la commande cd.

       RANDOM À chaque fois que ce paramètre est consulté, un entier aléatoire
              entre 0 et 32767 est engendré. Cette suite de nombres aléatoires
              peut être initialisée en affectant une valeur à RANDOM.  Si RAN‐
              DOM  est  détruite,  elle perd ses propriétés spéciales, même si
              elle est recréée par la suite.

       REPLY  Mis à la 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é, le nombre de secon‐
              des écoulées depuis le lancement de l’interpréteur est  renvoyé.
              Si une valeur est affectée à SECONDS, les valeurs renvoyées lors
              des  consultations  ultérieures  sont  le  nombre  de   secondes
              écoulées depuis l’affectation, ajoutées à la valeur affectée. 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
              virgules. Chaque mot de la liste est un  argument  correct  pour
              l’option  -o de la commande interne set (voir plus bas COMMANDES
              INTERNES DE L’INTERPRÉTEUR  ).  Les  options  apparaissant  dans
              SHELLOPTS  sont  celle  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 un quel‐
              conque fichier d’initialisation. Cette variable est  en  lecture
              seule.

       SHLVL  Incrémenté de 1 à chaque appel d’une instance de bash.

       UID    Contient l’UID de l’utilisateur courant, 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 plus bas.

       BASH_ENV
              Si ce paramètre existe lorsque bash exécute un script, sa valeur
              est  considérée  comme un nom de fichier contenant les commandes
              d’initialisation de l’interpréteur,  comme  dans  ~/.bashrc.  La
              valeur  de BASH_ENV est soumise au développement des paramètres,
              à la substitution de commande et au  développement  arithmétique
              avant d’être considérée comme un nom de fichier.  PATH n’est pas
              utilisée pour rechercher le fichier obtenu.
       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".
       COLUMNS
              Utilisée par la  commande  interne  select  pour  déterminer  la
              taille  du terminal lors de l’affichage des listes de sélection.
              Automatiquement mis à la réception d’un signal SIGWINCH.
       COMPREPLY
              Une  variable  de  type  tableau  dans  lequel  bash   lit   les
              complèteme