BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


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

SYNOPSIS
       bash [options] [fichier]

COPYRIGHT
       Bash est sous Copyright (C) 1989, 1999 de la Free Software
       Foundation, Inc.

DESCRIPTION
       Bash est un interpréteur (Shell) compatible sh qui exécute
       les  commandes lues depuis l'entrée standard, ou depuis un
       fichier.   Bash  incopore  également  des  fonctionnalités
       provenant  des interpréteurs Korn et C-shell (ksh et csh).

       Bash est entièrement concu pour être conforme aux spécifi­
       cations  IEEE  concernant  les  shells et les outils Posix
       (Groupe de travail de l'IEEE 1003.2).

OPTIONS
       En  plus  des  caractères  d'options  documentés  dans  la
       description  de  la commande interne set, bash accepte les
       arguments suivants lorsqu'on l'invoque :

       -c chaîne Si l'argument -c est présent, les commandes sont
                 interprétées  depuis  la  chaîne  fournie.  S'il
                 existe d'autres arguments après la  chaîne,  ils
                 sont  transmis comme paramètres positionnels, en
                 commencant par $0.
       -r        Si l'option -r est présente, l'interpréteur  est
                 restreint (voir les "SHELLS RESTREINTS").
       -i        Si  l'option -i est présente, l'interpréteur est
                 interactif.
       -s        Si l'argument -s est présent, ou s'il n'y a  que
                 des   options   sur   la   ligne   de  commande,
                 L'interprétation se fera depuis  l'entrée  stan­
                 dard.    Cette  option  permet  de  remplir  les
                 paramètres positionnels  tout  en  invoquant  un
                 shell interactif.
       -D        Une  liste  de  toutes  les chaînes entre '"' et
                 précédées de $ est affichée sur la sortie  stan­
                 darde.  Ce  sont les chaînes qui sont sujettes à
                 une traduction quand  les  locales  ne  sont  ni
                 celles  du  C  ni celles du standard POSIX. Cela
                 implique l'option -n ; aucune commande  ne  sera
                 executée.
       --        Deux  caractères -- permettent d'indiquer la fin
                 des options,  et  empêchent  le  traitement  des
                 arguments  restants.  Ces  derniers  sont  alors
                 traités  comme  des  noms  de  fichiers  et  des
                 paramètres.  - est équivalent à --.

       Bash   reconnait   également   plusieurs   options  multi-



GNU                      20 Janvier 1999                        1





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       caractères. Ces options doivent apparaitre sur la ligne de
       commande avant les options mono-caractère.

       --dump-po-strings
                 Équivalent à -D, mais la sortie est dans le for­
                 mat  des  fichiers  po  de  GNU  gettext  (objet
                 portable).
       --dump-strings
                 Équivalent à -D.
       --help    Affiche  un  message  sur l'usage de bash sur la
                 sortie standard et quitte en renvoyant  un  code
                 de retour de succès.
       --login   Se  comporter  comme  un  shell de login.  (Voir
                 INVOCATION).
       --noediting
                 Ne pas utiliser  la  bibliothèque  GNU  readline
                 pour  la lecture des lignes de commande, lorsque
                 le shell est interactif.
       --noprofile
                 Ne lire ni le fichier de configuration  générale
                 /etc/profile   ni   les  fichiers  personnalisés
                 ~/.bash_profile, ~/.bash_login,  ou  ~/.profile.
                 Par  défaut  bash lit ces fichiers lorsqu'il est
                 invoqué comme shell de login (voir le paragraphe
                 INVOCATION plus bas).
       -norc     Ne  pas lire le fichier de configuration person­
                 nalisée ~/.bashrc lorsque le shell est  interac­
                 tif.    Cette  option  est  activée  par  défaut
                 lorsque l'interpréteur est invoqué sous  le  nom
                 sh.
       --posix   Aligner  le comportement de bash sur le standard
                 Posix 1003.2, en ce  qui  concerne  les  options
                 dont le comportement par défaut est différent de
                 ce standard.
       --rcfile fichier
                 Executer les commandes contenues dans le fichier
                 mentionne,  plutot que celles du fichier de con­
                 figuration personnelle ~/.bashrc,  si  le  shell
                 est  interactif.  (voir le paragraphe INVOCATION
                 plus bas).
       --restricted
                 Le shell  devient  restreint  (voir  les  SHELLS
                 RESTREINTS).
       --verbose Équivalent à -v
       --version Afficher  le  numéro  de  version de bash sur la
                 sortie standard et terminer en retournant 0.

ARGUMENTS
       S'il reste des arguments sur la ligne de commande après le
       traitement  des options, et si ni l'option -c, ni l'option
       -s ne sont présentes, le premier argument est supposé être
       le nom du fichier dans lequel lire les commandes.  Lorsque
       bash est invoqué de cette maniere, $0 contient le  nom  du
       fichier, et les autres paramètres positionnels contiennent



GNU                      20 Janvier 1999                        2





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       les arguments restants.  Bash lit, et exécute, les comman­
       des depuis ce fichier, puis se termine.  Le code de retour
       de bash est celui de la derniere commande exécutée dans le
       fichier  script.   Si aucune commande n'a été exécutée, le
       code de retour est 0.

INVOCATION
       Un shell est dit de login si le premier caractère  de  son
       argument  numéro  zéro  est un -, ou s'il est invoqué avec
       l'option -login.

       Un shell est interactif si son entrée standard et sa  sor­
       tie  standard  sont  toutes  deux connectées à un terminal
       (déterminé par la fonction isatty(3)), ou s'il est invoqué
       avec  l'option -i.  Le paramètre PS1 est positionné, et le
       paramètre $- contient la lettre i si bash est  interactif,
       ce  qui permet à un script ou à un fichier de démarrage de
       vérifier l'état du shell.

       Le paragraphe suivant  décrit  comment  bash  éxécute  ses
       fichiers  de  d'initialisation.   Si  l'un de ces fichiers
       existe mais n'est pas accessible en lecture, bash  signale
       une  erreur.   Les  tildes sont remplacées par des noms de
       fichiers comme décrit dans Développement du Tilde dans  la
       section Développement.

       Les Shells de Login (interactifs ou non) :
         Au login :
               Si /etc/profile existe, il est exécuté.

               Si ~/.bash_profile existe, il est exécuté,
                 Sinon Si ~/.bash_login existe, il est exécuté,
                   Sinon Si ~/.profile existe, il est exécuté.
         L'option -noprofile permet d'empêcher la lecture de ces fichiers

         A la sortie :
               Si ~/.bash_logout existe, il est exécuté.

       Shells interactifs, mais pas de Login :
         Au démarrage :
               Si ~/.bashrc existe, il est exécuté.
         L'option -norc permet d'empêcher cette lecture. L'option -rcfile)
         permet d'utiliser un autre fichier.

       Shells non-interactifs:
         Au démarrage:
               Si la variable d'environnement BASH_ENV est non-nulle, elle est
               développée, et le fichier dont elle contient le nom est exécuté,
               comme si l'on appliquait la commande
                       if [ "$BASH_ENV" ]; then . $BASH_ENV; fi
               mais on n'utilise pas PATH pour rechercher le chemin d'accès.


       Si  Bash est invoqué sous le nom sh, il essaye d'imiter au



GNU                      20 Janvier 1999                        3





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       maximum le comportement de la version "historique"  de  sh
       autant  que  possible, tout en essayant de se conformer au
       standard POSIX.  Pour  un  shell  de  login,  il  n'essaye
       d'exécuter que /etc/profile et ~/.profile, dans cet ordre.
       L'option  -noprofile  peut  toujours  être  utilisée  pour
       désactiver  ce comportement.  Quand il est invoqué en tant
       que shell interactif sous le  nom  sh,  bash  consulte  la
       variable  ENV,  développe sa vakeur si elle est définie et
       utilise son développement en tant que  nom  de  fichier  à
       lire  et  exécuter.  Comme un shell invoqué sous le nom sh
       n'essaye pas d'exécuter aucun autre fichier de  démarrage,
       l'option  --rcfile n'a aucun effet.  Un shell non interac­
       tif invoqué sous le nom sh  ne  lit  aucun  autre  fichier
       d'initialisation.   Quand  il  est invoqué sous le nom sh,
       bash entre en mode  posix  après  avoir  lu  les  fichiers
       d'initialisation.

       Quand bash est invoqué en mode posix, avec l'option -posix
       sur la ligne de commande, il suit ce standard  en  ce  qui
       concerne  les fichiers de démarrage. Dans ce cas, la vari­
       able ENV est développée, et le fichier qui en résulte  est
       exécuté.  On  n'exécute  pas d'autre fichier d'initialisa­
       tion.

       Bash tente de déterminer s'il est  exécuté  par  le  démon
       éxécutant  des  shells  à  distances (généralement appellé
       rshd).  Si bash se rend compte qu'il est exécuté par  rshd
       ,  il  lit  et  exécute les commandes de ~/.bashrs , si ce
       fichier existe et est accessible en lecture.  Il  ne  fera
       pas  cela  comme le ferait sh .  L'option --norc peut être
       utilisé  pour  interdire  ce  comportement,  et   l'option
       --rcfile   permet   de  forcer  l'utilisation  d'un  autre
       fichier, mais rshd n'utilise généralement pas ces  options
       ni n'autorise leur utilisation.

       Si  le  shell  est lancé avec un numéro de groupe effectif
       différend du groupe réel de  l'utilisateur  (GID),  et  si
       l'option -p n'est pas appliquée, aucun fichier d'initiali­
       sation n'est lu,  les  fonctions  du  shell  ne  sont  pas
       héritées  de  l'environnement,  la  variable SHELLOPTS est
       ignorée si  elle  apparaît  dans  l'environnement,  et  le
       numéro  effectif  de l'utilisateur (EUID) est remplacé par
       l'UID. Si l'option -p est appliquée lors de cette  invoca­
       tion, le comportement au démarrage est le même maie l'EUID
       n'est pas réinitialisé.

       Note du traducteur: Sous Linux,  le  paragraphe  précédent
       est  inutile  car  pour des raisons de sécurités, le noyau
       ignore les bits Set-User-Id et Set-Group-Id.  Donc  l'EUID
       sera toujours égal à l'UID, de même pour le GID et l'EGID.

DÉFINITIONS
       Les définitions suivantes sont utilisées tout au  long  de
       ce document.



GNU                      20 Janvier 1999                        4





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       blanc  Un espace ou une tabulation.
       mot    une  séquence  de  caractères  considerée comme une
              unité élémentaire par le shell.  On parle également
              de token (jeton).
       nom    un  mot  ne  contenant  que  des  caractères alpha-
              numériques, ou le caractère de soulignement (under­
              score),  commençant  par une lettre ou un souligne­
              ment. On s'y refère également sous le terme identi­
              ficateur.
       méta-caractère
              Un  caractère  qui,  lorsqu'il  n'est  pas protégé,
              sépare les mots. Un de ceux-ci :
              |  & ; ( ) < > espace tabulation
       opérateur de contrôle
              Un token ayant une fonction de contrôle.  L'un  des
              symboles suivants :
              || & && ; ;; ( ) | <retour-chariot>

MOTS RÉSERVÉS
       Les  mots  réservés ont une signification spéciale pour le
       shell.  Les mots suivants sont réservés et interprétés par
       le  shell  lorsqu'ils ne sont pas protégés, et s'il s'agit
       soit  du  premier  mot  d'une  commande  simple,  soit  du
       troisième  mot  d'une  commande case ou for (voir le para­
       graphe GRAMMAIRE DU SHELL ci-dessous).

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

GRAMMAIRE DU SHELL
   Commandes simples
       Une  commande  simple  est  une séquence d'affectations de
       variables facultative, suivie  de  mots  séparés  par  des
       blancs  et  des redirections, et terminée par un opérateur
       de  controle.   Le  premier  mot  indique  la  commande  à
       exécuter.  Les  mots  suivants sont transmis en argument à
       cette commande.

       La valeur de retour d'une commande simple est son code  de
       sortie,  ou  128+n si la commande a été interrompue par le
       signal n.

   Tubes (Pipelines)
       Un tube est une  séquence  d'une  ou  plusieurs  commandes
       séparées par le caractère |.  Le format d'un tube est :

              [ ! ] commande_1 [ | commande_2 ... ]

       La  sortie  standard  de  la  commande_1  est  connectée à
       l'entrée standard de la commande_2.  Cette  connexion  est
       établie avant toute redirection indiquée dans une commande
       elle-même (voir le paragraphe REDIRECTION plus bas).

       Si le mot réservé !  précède un tube, la valeur de  sortie



GNU                      20 Janvier 1999                        5





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       de  celui-ci  sera  la  NÉGATION  logique  de la valeur de
       retour de la dernière commande. Sinon, le code  de  retour
       d'un   tube   sera   celui   de   la   dernière  commande.
       L'interpréteur attend la fin de toutes  les  commandes  du
       tube avant de renvoyer une valeur.

       Si le mot réservé time précède le tube, les temps écoulés,
       consommés par le programme et par le système pour le  pro­
       gramme  sont  indiqués quand le tube se termine.  L'option
       -p change le format de  sortie  pour  celui  spécifié  par
       POSIX.  La variable TIMEFORMAT peut être affectée avec une
       chaîne  de  format  indiquant  comment  les   informations
       doivent être affichées; consultez la descriptions de TIME­
       FORMAT dans Variables du Shell.

       Chaque commande du tube est exécutée  comme  un  processus
       indépendant (c'est à dire dans un sous-shell).

   Listes
       Une liste est une séquence d'un ou plusieurs tubes séparés
       par l'un des opérateurs ;, &, &&, ou ||, et  terminée  par
       ;, &, ou <retour-chariot>.

       Dans cette liste d'operateurs, && et || ont une précédence
       identique, suivis par  ;  et  &,  qui  ont  également  une
       précédence identique.

       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-
       shell.   L'interpréteur  n'attend  pas  que la commande se
       termine et retourne un code 0. Les commandes séparées  par
       un  ; sont exécutées successivement, l'interpréteur attend
       que chaque commande se termine avant de  lancer  la  suiv­
       ante.  Le code de retour est celui de la dernière commande
       exécutée.

       Les opérateurs de contrôle && et || indiquent  respective­
       ment  une  liste  liée par un ET, et une liste liée par un
       OU.  Une liste ET a la forme

              commande_1 && commande_2

       commande_2 est exécutée si, et  seulement  si,  commande_1
       renvoie un code de retour nul.

       Une liste OU a la forme

              commande_1 || commande_2


       commande_2  est  exécutée  si,  et seulement si commande_1
       renvoie un code de retour non-nul.  La  valeur  de  retour
       des  listes  ET  et  OU  est celle de la dernière commande
       exécutée dans la liste.



GNU                      20 Janvier 1999                        6





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


   Commandes composées
       Une commande composée est l'une  des  constructions  suiv­
       antes :

       (liste)
              liste est exécutée dans un sous-shell. Les affecta­
              tions de variables, et les commandes  internes  qui
              affectent  l'environnement  de l'interpréteur n'ont
              pas d'effet une fois que la commande se termine. Le
              code de retour est celui de la liste.

       { liste; }
              liste  est simplement exécutée avec l'environnement
              du shell en cours.  Cette construction  est  connue
              sous  le  nom  de  commandes  groupées.  Le code de
              retour est celui de la liste.  liste  doit  obliga­
              toirement se terminer par un caractère fin-de-ligne
              ou un point-virgule.

       L'expression est évaluaée selon les règles décrites dans
              ÉVALUATION  ARITHMÉTIQUES.    Si   la   valeur   de
              l'expression n'est pas zéro, la valeur renvoyée est
              zéro; sinon 1 est  renvoyé.  Cela  est  strictement
              identique à "expression".

       [[ expression ]]
              Renvoie  1  ou  0  selon  la valeur de la condition
              expression.    les   expressions   sont   composées
              d'éléments  primaires décrits dans EXPRESSIONS CON­
              DITIONELLES.  Le coupage des  mots  et  l'expansion
              des chemins ne sont pas réalisés sur les mots entre
              [[ et ]]; l'expansion des tildes,  des  paramètres,
              des  variable,  des  expressions  arithmétiques, la
              substitution des commandes et des processus,  ainsi
              que la disparition des apostrophes sont réalisés.

              Quand  les  opérateurs  ==  et != sont utilisés, la
              chaîne placée à la droite de l'opérateur  est  con­
              sidéré  comme étant un motif et est recherché selon
              les  règles  décrites  dans  Motifs  Matching.   La
              valeur   renvoyée   est   0  si  la  recherche  est
              fructueuse et 1 sinon.  Toute partie du motif  peut
              être  protégée  avec des apostrophes pour forcer sa
              comparaison en tant  que  chaîne  (sans  développe­
              ment).

              Les expressions peuvent être combinées en utilisant
              les opérateurs suivants, lisés par  ordre  décrois­
              sant de priorité :

              ( expression )
                     Retourne  la value de expression.  Cela peut
                     être utilisé pour  outrepasser  la  priorité
                     normale des opérateurs.



GNU                      20 Janvier 1999                        7





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              ! expression
                     Vraie si expression est vraie.
              expression1 && expression2
                     Vraie  si  expression1  et  expression2 sont
                     toutes les deux vraies.
              expression1 || expression2
                     Vraie  si  expression1  ou  expression2  est
                     vraie.

       Les  opérateurs && et || n'exécutent pas expression2 si la
       valeur de expression1 est suffisante  pour  déterminer  le
       code de retour de l'expression conditionnelle entière.


       for nom [ in mot; ] do liste ; done
              La  liste  de mots à la suite de in est développée,
              créant une liste d'éléments.  La variable nom prend
              sucessivement  la valeur de chacun des éléments, et
              liste est exécutée à chaque fois.  Si  in  mot  est
              omis,  la  commande  for  exécute la liste une fois
              pour chacun des paramètres positionnels  ayant  une
              valeur  (voir  le  paragraphe PARAMÈTRES plus bas).
              Le code de retour est celui de la dernière commande
              exécutée. Si le développement de ce qui suit in est
              une liste vide, aucune commande n'est exécutée et 0
              est renvoyé.

       select nom [ in mot; ] do liste ; done
              La  liste  de mots à la suite de in est développée,
              créant une liste d'éléments.  L'ensemble  des  mots
              développés est imprimé sur la sortie d'erreur stan­
              dard, chacun précédé par un nombre. Si in  mot  est
              omis,  les  paramètres  positionnels  sont imprimés
              (voir le paragraphe PARAMÈTRES plus bas).

              Le symbole d'accueil PS3 est affiché, 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, la variable nom est remplie avec ce
              mot.

              Si la ligne  est  vide,  les  mots  et  le  symbole
              d'accueil  sont  affichés  à nouveau. Si une fin de
              fichier est lue  (EOF),  la  commande  se  termine.
              Pour toutes les autres valeurs, la variable nom est
              nulle. La ligne lue est stockée  dans  la  variable
              REPLY.   La  liste est exécutée après chaque sélec­
              tion, jusqu'à ce qu'une commande  break  ou  return
              soit  atteinte.   Le  code  de retour de select est
              celui de la  dernière  commande  exécutée  dans  la
              liste, ou zéro si aucune commande n'est exécutée.

       case mot in [ motif [ | motif ] ... ) liste ;; ] ... esac
              Une  commande  case commence d'abord par développer



GNU                      20 Janvier 1999                        8





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              le mot, puis essaye de le mettre en  correspondance
              successivement  avec chacun des motifs en utilisant
              les mêmes règles de  correspondance  que  pour  les
              expansions  de noms de fichiers (voir le paragraphe
              Développement  des  noms  de  fichiers  plus  bas).
              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 essais de corre­
              spondance. Le code de  retour  est  zéro  si  aucun
              motif  ne correspond, sinon il s'agit du code de la
              liste exécutée.

       if liste then liste [ elif liste then liste ] ... [ else
              liste  ] fi
              La liste suivant le if est exécutée. Si son code de
              retour  est  nul,  la  liste  suivant  le  then est
              exécutée. Sinon, chacune des listes  des  elif  est
              exécutée  successivement,  et  si un code de retour
              est nul, la liste du then associé est exécutée,  et
              la  commande  se  termine.   En dernier ressort, la
              liste du else est exécutée.  Le code de retour  est
              celui  de la dernière commande exécutée, ou zéro si
              aucune condition n'a été vérifiée.

       while liste; do liste done
       until liste; do liste done
              La commande while répète la  liste  suivant  le  do
              tant  que  la dernière commande de la liste suivant
              le while renvoie un code de retour  nul.   La  com­
              mande  until agit de même manière, sauf que le test
              est négatif, et la liste du do  est  exécutée  tant
              que  la liste du until renvoie un code non-nul.  Le
              code de retour des commandes  while  et  until  est
              celui  de  la  dernière  commande  exécutée dans la
              liste do,  ou  zéro  si  aucune  commande  n'a  été
              exécutée.

       [ function ] nom () { liste; }
              Ceci  définit  une  fonction  possédant le nom men­
              tionné.  Le corps de cette fonction est la liste de
              commandes  entre  {  et }. Cette liste est exécutée
              dès que le nom de la fonction est invoqué  en  tant
              que  commande  simple.  Le code de retour est celui
              de la dernière commande exécutée dans le  corps  de
              la  fonction.  (voir  le  paragraphe FONCTIONS plus
              bas)

COMMENTAIRES
       Dans un shell non-interactif, ou dans un shell  interactif
       avec  l'option -o interactive-comments activée par la com­
       mande interne shopt (voir COMMANDES INTERNES DU SHELL), un
       mot  commençant  par  #  permettra d'ignorer tous les car­
       actères restants sur la ligne.  Un shell  interactif  sans
       l'option    interactive-comments    n'autorise   pas   les



GNU                      20 Janvier 1999                        9





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       commentaires.  L'option interactive_comments  est  activée
       par défaut dans les shells interactifs.

PROTECTION
       Les    protections    (quoting)   permettent   de   forcer
       l'interpréteur à ignorer la signification spéciale de cer­
       tains  caractères  ou  mots.  Les protections peuvent être
       utilisées pour empêcher le  traitement  de  certains  car­
       actères  spéciaux,  pour  éviter  que des mots-réservés ne
       soient reconnus comme tels, ou pour empcher le  développe­
       ment des paramètres.

       Tous  les  méta-caractères  mentionnés  dans le paragraphe
       DÉFINITIONS ci-dessus  ont  des  significations  spéciales
       pour  le  shell, et doivent être protégés pour garder leur
       propre valeur.  Il y a trois mécanismes de protection : Le
       caractère  d'échappement,  les  apostrophes (quote) et les
       guillemets (double-quote).

       Un caractère backslash (\), quand il  n'est  pas  protégé,
       représente  le  caractère  d'échapement.   Il  préserve la
       valeur littérale du caractère qui le suit,  à  l'exception
       du  <retour-chariot>.   Si  une séquence \<retour-chariot>
       apparaît, et si le backslash n'est pas protégé, l'ensemble
       \<retour-chariot>  est considéré comme une continuation de
       ligne (autrement dit, il est ignoré).

       Encadrer des  caractères  entre  des  apostrophes  simples
       préserve la valeur littérale de chacun des caractères. Une
       apostrophe ne peut pas être placée entre deux apostrophes,
       même si elle est précédée d'un backslash.

       Encadrer  des  caractères entre des guillemets préserve la
       valeur littérale de chacun des caractères sauf $, `, et \.
       Les  caractères  $  et  `  conservent leurs significations
       spéciales, même entre guillemets. Le backslash ne conserve
       sa  signification  que lorsqu'il est suivi par $, `, ", \,
       ou <fin-de-ligne>.  Un guillemet peut etre  protégé  entre
       deux  guillemets,  à condition de le faire précéder par un
       backslash.

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

       Les mots de la forme $'chaîne' sont traités  différemment.
       Le   mot  est  développé  en  chaîne  avec  les  séquences
       d'échappement remplacées par les séquences standards du  C
       ANSI:
              \a     alerte (cloche alias bip)
              \b     effacement arrière
              \e     un caractère escape
              \f     fin de page
              \n     fin de ligne



GNU                      20 Janvier 1999                       10





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              \r     retour chariot
              \t     tabulation horizontale
              \v     tabulation verticale
              \\     anti-slash
              \nnn   le caractère dont le code ASCII en octal est
                     nnn (un à trois chiffres)
              \xnnn  le  caractère  dont   le   code   ASCII   en
                     hexadécimal est nnn (un à trois chiffres)

       Le  résultat après traduction est protégé par des apostro­
       phes comme si le symbole dollar n'avait pas été présent.

       Une chaîne entre guillemets précédée d'un  symbole  dollar
       ($)  sera  traduite  selon  les locales en vigueur.  Si la
       locale courante est C [Ndt: valeur par défaut]  ou  POSIX,
       le  symbole  dollar  est  ignoré.  Si la chaîne a subi une
       traduction ou des remplacements, le résultat  est  protégé
       par des guillemets.

PARAMÈTRES
       Un  paramètre  est  une  entité  permettant de stocker des
       valeurs, un peu comme les variables dans les  langages  de
       programmation  courants.  Un  paramètre  peut se présenter
       sous forme d'un nom, d'un nombre, ou d'un  des  caractères
       spéciaux  décrits  plus bas, dans le paragraphe Paramètres
       Spéciaux.   Au  niveau  du  shell,  une  variable  est  un
       paramètre muni d'un nom.

       Un paramètre existe dès qu'on lui attribue une valeur. Une
       chaîne vide est une valeur valide. Une fois  qu'une  vari­
       able existe, elle ne peut etre détruite qu'en utilisant la
       commande interne unset (voir COMMANDES INTERNES  DU  SHELL
       plus bas).

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

              nom=[valeur]

       Si aucune valeur n'est indiquée, la  variable  reçoit  une
       chaîne  vide.   Toute  valeur est soumise aux principes de
       développement du tilde, des paramètres et  des  variables,
       de   la   substitution   de   commandes,  de  l'évaluation
       arithmétique, et de la suppression des protections. Si une
       variable  a son attribut -i activé (voir declare plus bas,
       dans le paragraphe COMMANDES INTERNES DU SHELL)  alors  la
       valeur est soumise à l'évaluation arithmétique, même si la
       syntaxe $[...]  n'apparaît  pas.  Les  mots  ne  sont  pas
       tronqués,  sauf  avec  la  séquence  "$@"  comme  cela est
       expliqué  dans  le  paragraphe  Paramètres  Spéciaux   ci-
       dessous.   Le développement des noms de fichiers n'est pas
       effectué.





GNU                      20 Janvier 1999                       11





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


   Paramètres Positionnels
       Un paramètre positionnel est un paramètre indiqué  par  un
       ou  plusieurs  chiffres (à l'exception du chiffre 0 seul).
       Les paramètres positionnels sont remplis  avec  les  argu­
       ments  du  shell  lors de son invocation. Ils peuvent être
       modifiés avec la commande interne set.   On  ne  peut  pas
       utiliser  d'assignation  pour  modifier  le  contenu  d'un
       paramètre positionnel.

       Les paramètres positionnels sont  temporairement  modifiés
       lors de l'exécution d'une fonction du shell (voir le para­
       graphe FONCTIONS plus bas).

       Un paramètre positionnel constitué de  plusieurs  chiffres
       doit être encadré par des accolades lors de son développe­
       ment (voir le paragraphe EXPANSION plus bas).

   Paramètres Spéciaux
       Il existe plusieurs paramètres de l'interpréteur ayant  un
       comportement  particulier.  Ces paramètres peuvent unique­
       ment être consultés, on ne peut pas les modifier.
       *      Se développe en l'ensemble des paramètres position­
              nels,  en  commençant par 1. Quand le développement
              se produit entre des guillemets, * se transforme en
              un  seul  mot  constitué  de  la valeur de tous les
              paramètres positionnels  séparées  par  le  premier
              caractère de la variable spéciale IFS.  Ceci signi­
              fie que ``$*'' est équivalent à ``$1c$2c...'', dans
              laquelle c est le premier caractère de la valeur de
              la variable IFS.  Si IFS est nulle ou  inexistante,
              les paramètres sont séparés par des espaces.
       @      Se développe en l'ensemble des paramètres position­
              nels, en commençant par 1. Quand  le  développement
              se  produit  entre des guillemets, chaque paramètre
              se transforme en un mot distinct. Ceci signifie que
              ``  $@''  est équivalent à ``$1'' ``$2'' ...  Quand
              il n'y a pas de paramètres positionnels, ``$@''  et
              $@ sont simplement éliminés.
       #      Se  développe  pour fournir le nombre de paramètres
              positionnels, en base décimale.
       ?      Fournit le  code  de  retour  du  tube  exécuté  en
              arrière-plan le plus récemment.
       -      Est  remplacé  par  la  liste  des options du shell
              indiquées durant l'invocation, configurées avec  la
              commande  interne  set ou positionnées par le shell
              lui-même (comme le drapeau -i).
       $      Se transforme en PID du shell. Dans  un  sous-shell
              (), il se transforme en PID du shell, et non pas du
              sous-shell.
       !      Se transforme en PID de  la  commande  (asynchrone)
              exécutée en arrière-plan le plus récemment.
       0      Se  développe  pour  donner  le  nom du shell ou du
              script. Ce paramètre est rempli lors de l'initiali­
              sation  de l'interpréteur. Si bash est invoqué avec



GNU                      20 Janvier 1999                       12





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              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 chemin d'accès  utilisé  pour
              invoquer  bash, comme il l'a reçu en argument zéro.
       _      Au lancement du shell, contient le chemin absolu du
              shell  ou  du script en cours d'exécution passé sur
              la ligne de commande.  Devient le dernier  argument
              de  la  commande  précédente,  apres développement.
              Correspond  aussi  au  chemin  d'accès  complet  de
              chaque  commande  exécutée,  et  se  retrouve  dans
              l'environnement exporté à cette commande.  Lors  de
              la  vérification de l'arrivée de courrier, contient
              le nom du fichier de courrier en cours de vérifica­
              tion [Ndt: généralement /var/mail/nom_de_l_utilisa­
              teur].

   Variables du Shell
       Les variables suivantes sont assignées par  l'interpréteur
       de commandes :

       PPID   L'ID  du processus parent du shell. Cette variables
              est protégée en écriture.
       PWD    Le répertoire de travail en cours,  tel  qu'il  est
              configuré par la commande cd.
       OLDPWD Le  répertoire  de travail précédent, configuré par
              la commande cd.
       REPLY  Contient la ligne  d'entrée  lue  par  la  commande
              interne read lorsqu'elle n'a pas d'argument.
       UID    Contient  l'U-ID  de  l'utilisateur,  initialisé au
              démarrage du shell.
       EUID   Contient  l'UID  effectif  de  l'utilisateur,  ini­
              tialisé  au démarrage du shell [Ndt: sous Linux, il
              ne devrait jamais être différent de  l'UID  car  le
              Set-User-Bit est inactif sur les scripts et inutile
              voire dangereux sur un  shell  (i.e:  imaginer  une
              redirection sur /etc/passwd) ]
       GROUPS Variable  de  type  tableau  contenant la liste des
              groupes  dont  l'utilisateur  courant  est  membre.
              Cette variables est protégée en écriture.
       BASH   Se développe en chemin d'accès complet utilisé pour
              invoquer l'instance de bash en cours d'exécution.
       BASH_VERSION
              Correspond au numéro de version de  cette  instance
              de bash.
       BASH_VERSINFO
              Une  variable-tableau protégée en écriture dont les
              nombres représentent la version de  cette  instance
              de bash.  Cette valeur est renseignée de la manière
              suivante:
              BASH_VERSINFO[0]        Le nombre majeur de la ver­
                                      sion (release).
              BASH_VERSINFO[1]        Le   nombre  mineur  de  la



GNU                      20 Janvier 1999                       13





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


                                      version (version).
              BASH_VERSINFO[2]        Le niveau de patch.
              BASH_VERSINFO[3]        Le numéro de compilation.
              BASH_VERSINFO[4]        Le statut de cette  version
                                      (e.g., beta1).

       SHLVL  (NDT   :  Lire  SH  LVL  -  Shell  Level  -  Niveau
              d'interpréteur) Incrémenté de 1 à chaque invocation
              d'une instance de bash.

       RANDOM A  chaque  fois  que ce paramètre est référencé, un
              entier aléatoire est engendré.  Cette  séquence  de
              nombres  aléatoires peut être initialisée en assig­
              nant une valeur à RANDOM.  Si  RANDOM  est  détruit
              (commande unset), il perd son comportement spécial,
              même s'il est recréé plus tard.

       SECONDS
              A chaque fois que ce paramètre est lu, le nombre de
              secondes    écoulées   depuis   le   lancement   de
              l'interpréteur  est  renvoyé.  Si  une  valeur  est
              affectée  à  SECONDS, il renverra lors des lectures
              ultérieures le nombre de secondes  écoulées  depuis
              l'assignation,  augmenté  de la valeur fournie.  Si
              SECONDS est détruit (commande unset), il  perd  son
              comportement  spécial,  même  s'il  est recréé plus
              tard.

       LINENO Chaque fois que  ce  paramètre  est  référencé,  le
              shell  le  remplace par un nombre décimal représen­
              tant le numéro de la ligne actuelle  (commençant  à
              1),  au sein du script ou de la fonction.  Quand on
              n'est ni dans un script, ni dans une  fonction,  la
              valeur  renvoyée  n'a  pas  nécéssairement de sens.
              Dans une fonction, la valeur n'est pas le numéro de
              ligne  dans  le fichier source (cette valeur a déjà
              été perdue lorsque la fonction est exécutée),  mais
              une  approximation  du  nombre de commandes simples
              exécutées dans le  corps  de  cette  fonction.   Si
              LINENO  est  détruit  (commande unset), il perd son
              comportement spécial, même  s'il  est  recréé  plus
              tard.

       HISTCMD
              Le  numéro  d'historique,  ou le rang dans la liste
              d'historique, de la commande en cours.  Si  HISTCMD
              est détruit (commande unset), il perd son comporte­
              ment spécial, même s'il est recréé plus tard.

       DIRSTACK
              Une variable-tableau (voir Arrays) représentant  le
              contenu  courant  de  la  pile  de répertoire.  Les
              répertoires apparaissent dans la pile dans  l'ordre
              dans  lequel  la commande interne dirs les affiche.



GNU                      20 Janvier 1999                       14





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              Il est possible de modifier directement cette vari­
              ables  mais  les  commandes  internes pushd et popd
              doivent être utilisées pour ajouter et enlever  des
              répertoires.   Modifier cette variable ne modifiera
              pas le répertoire courant.  Si DIRSTACK  n'est  pas
              assignée,  elle perd ses propriétés spéciales, même
              si elle est recréée.

       PIPESTATUS
              Une variable-tableau (voir  Arrays)  contenant  une
              liste  des  codes  de retour des derniers processus
              exécutés en avant-plan  (éventuellement  une  seule
              commande).

       OPTARG La  valeur  du dernier argument d'option traité par
              la commande interne  getopts  (voir  le  paragraphe
              COMMANDES INTERNES DU SHELL plus bas).

       OPTIND Le rang du prochain argument à traiter avec la com­
              mande  getopts  (voir   le   paragraphe   COMMANDES
              INTERNES DU SHELL plus bas).

       HOSTNAME
              Automatiquement  affectée  avec le nom de l'ordina­
              teur.

       HOSTTYPE
              Automatiquement rempli avec une chaîne  qui  décrit
              de  manière  unique le type de machine sur laquelle
              bash s'exécute. La  valeur  par  défaut  dépend  du
              système.

       OSTYPE Automatiquement  rempli  avec une chaîne qui décrit
              le  système  d'exploitation   sur   lequelle   bash
              s'exécute.  La valeur par défaut dépend du système.

       MACHTYPE
              Automatiquement affectée avec une chaîne  décrivant
              le  type du système sur lequel bash s'éxécute, dans
              le format  standard  de  GNU  processeur-compagnie-
              système.  La valeur par défaut dépend du système.

       SHELLOPTS
              Liste  des  options activées du shell, séparées par
              des virgules.  Chaque mot de la liste est un  argu­
              ment valide pour l'option -o de la commande interne
              set  (voir  COMMANDES  INTERNES  DU  SHELL).    Les
              options  apparaissant  dans  SHELLOPTS  sont  celle
              indiquées comme actives par set -o.  Si cette vari­
              able 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
              protégée en écriture.




GNU                      20 Janvier 1999                       15





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


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

       IFS    Le Séparateur de  Champs  Interne  (Internal  Field
              Separator)  qui  est  utilisé pour séparer les mots
              après les  développements,  et  pour  decouper  les
              lignes  en  mots avec la commande interne read.  La
              valeur   par    défaut    est    ``<espace><tabula­
              tion><retour-chariot>''.
       PATH   Le chemin de recherche des commandes à exécuter. Il
              s'agit d'une liste de répertoires, séparés par  des
              doubles-points  (`:')  que  l'interpréteur consulte
              lorsqu'il recherche une  commande  (voir  le  para­
              graphe ÉXÉCUTION DES COMMANDES plus bas). Le chemin
              par défaut dépend du système, et de  la  configura­
              tion  choisie par la personne installant bash.  Une
              configuration             fréquente             est
              ``/bin:/usr/bin:/usr/local/bin:/usr/gnu/bin:.''.
       HOME   Le  répertoire  personnel  de  l'utilisateur. C'est
              l'argument par défaut de la commande interne cd.
       CDPATH Le chemin de recherche de la commande  interne  cd.
              Il  s'agit  d'une liste de répertoires, séparés par
              des doubles-points (`:')  que  l'interpréteur  con­
              sulte lorsqu'il cherche un sous-répertoire destina­
              tion de la commande cd.   Voici  une  configuration
              possible ``.:~:/usr''.
       BASH_ENV
              Si  ce paramètre est configuré 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  .bashrc.   La  valeur  de
              BASH_ENV    est   soumise   au   remplacement   des
              paramètres, à la substitution de  commandes,  et  à
              l'évaluation  arithmétique avant d'être interprétée
              comme un nom de fichier. Le  chemin  d'acccès  PATH
              n'est   pas  utilisé  pour  rechercher  le  fichier
              obtenu.
       MAIL   Si ce paramètre correspond à un nom de fichier,  et
              si  la variable MAILPATH n'est pas configurée, bash
              informera l'utilisateur si un courrier arrive  dans
              le fichier indiqué.
       MAILCHECK
              Indique une fréquence (en secondes) à laquelle bash
              vérifiera si un nouveau  courrier  est  arrivé.  La
              valeur par défaut est 60 secondes. Lorsque le délai
              est ecoulé, le shell  vérifiera  la  présence  d'un
              courrier  avant  d'afficher  son symbole d'accueil.
              Si cette variable est détruite  (unset),  le  shell
              cessera de vérifier le courrier.
       MAILPATH
              Il  s'agit  d'une liste de fichiers séparés par des
              doubles-points (`:'), dans  lesquels  on  verifiera
              l'arrivée  de  courrier.  Le  nom d'un fichier peut



GNU                      20 Janvier 1999                       16





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              ê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.  Exem­
              ple:
              MAILPATH='/usr/spool/mail/bfox?"Tu  as   du   cour­
              rier":~/shell-mail?"$_ a du courrier"'
              Bash fournit une valeur par defaut pour cette vari­
              able, mais l'emplacement du fichier boîte à lettres
              depend       du      système      (par      exemple
              /usr/spool/mail/$USER).
       PS1    La valeur  de  ce  paramètre  est  développée  puis
              utilisée comme symbole d'accueil principal (voir le
              paragraphe  SYMBOLE  D'ACCUEIL   ci-dessous).    La
              valeur par défaut est ``bash\$ ''.
       PS2    La  valeur  de  ce  paramètre  est  développée puis
              utilisée comme symbole  d'accueil  secondaire.  Par
              défaut il s'agit de ``> ''.
       PS3    La  valeur  de  ce  paramètre  est  développée puis
              utilisée comme symbole d'accueil pour  la  commande
              select (voir GRAMMAIRE DU SHELL plus haut).
       PS4    La  valeur  de  ce  paramètre  est  développée puis
              affichée entre  chaque  commande  lors  d'un  suivi
              d'exécution.   Le  premier  caractère  de  PS4  est
              répété autant de fois que nécéssaire pour  indiquer
              le  niveau  d'imbrication. La valeur par défaut est
              ``+ ''.
       TIMEFORMAT
              La valeur de ce paramètre est utilisée en tant  que
              chaîne  de  format  pour afficher le temps consommé
              dans les tubes préfixés avec le mot  réservé  time.
              Le caractère % introduit une séquence d'échappement
              qui est développée avec une valeur de temps ou  une
              autre  information.  Les séquences d'échappement et
              leurs significations sont les suivantes; les  acco­
              lades entourent les parties facultatives.
              %%        Un % seul (non interprété).
              %[p][l]R  Le temps écoulé en secondes.
              %[p][l]U  Le  temps processeur écoulé en mode util­
                        isateur en secondes.
              %[p][l]S  Le  temps  processeur  écoulé   en   mode
                        système en secondes.
              %P        Le   pourcentage   de   temps  processeur
                        utilisé calculé avec (%U + %S) / %R.

              La séquence facultative p est un chiffre  indiquant
              la  précision,  le nombre de chiffres après la vir­
              gule.  Une valeur de 0 provoque l'affichage de nom­
              bre  entiers.   Trois chiffres au plus peuvent être
              affichés après la virgule; tout chiffre supérieur à
              3  sera changé en 3.  Si p n'est pas indiqué, 3 est
              utilisé.

              La  séquence  optionnelle  l  spécifie  un   format



GNU                      20 Janvier 1999                       17





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              étendu,   incluant   les   minutes,   de  la  forme
              MMmSS.FFs.  La valeur de p détermine si  la  partie
              décimale est affichée ou non.

              Si  cette  variable n'est pas assignée, bash réagit
              comme            si            la            valeur
              $'\nreal\t%3lR\nuser\t%3lU\nsys%3lS'    avait   été
              affectée.  Si la variable est vide, aucune informa­
              tion n'est affichée.  Un caractère fin-de-ligne est
              ajouté à la fin de l'affichage.

       HISTSIZE
              Le nombre de  commandes  à  mémoriser  dans  l'his­
              torique  (voir  le paragraphe HISTORIQUE plus bas).
              La valeur par défaut est 500.

       HISTFILE
              Le nom du fichier d'historique pour la mémorisation
              des  commandes(voir  le  paragraphe HISTORIQUE plus
              bas).  Par défaut, il s'agit de ~/.bash_history. Si
              cette   variable  est  détruite  (commande  unset),
              l'historique n'est pas enregistré lors  de  la  fin
              d'un shell interactif.

       HISTFILESIZE
              Le  nombre  maximal  de  lignes  contenues  dans le
              fichier historique. Quand cette  variable  contient
              une  valeur,  le fichier historique est tronqué, si
              besoin est, pour  ne  contenir  que  ce  nombre  de
              lignes.  La  valeur  par défaut est 500. Ce fichier
              est tronqué quand un shell interactif existe.

       OPTERR Si  cette  variable  contient  la  valeur  1,  bash
              affiche  les  messages  d'erreurs déclenchés par la
              commande interne getopts (voir le  paragraphe  COM­
              MANDES  INTERNES  DU  SHELL  plus bas).  OPTERR est
              initialisé avec la valeur 1 à chaque invocation  du
              shell, ou au lancement d'un script.

       LANG   Détermine   la   localisation   pour   toutes   les
              catégories non  spécifiquement  précisées  par  une
              variable commencant par LC_.

       LC_ALL Cette  variable surcharge LANG et toute autre vari­
              able LC_.

       LC_COLLATE
              Cette variable détermine l'ordre lors  du  tri  des
              chemins  ainsi  que le comportement des expressions
              des intervalles, des classes d'équivalences, et  de
              la  comparaison  de chaînes lors de la recherche de
              motifs et le développement des chemins.





GNU                      20 Janvier 1999                       18





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       LC_CTYPE
              Cette variable détermine l'interprétation des  car­
              actères  et  le  comportement  des  classes de car­
              actères [Ndt: ex: [:alpha] ] lors du  développement
              des chemins et de la recherche de motifs.

       LC_MESSAGES
              Cette variable détermine le langage des messages et
              celui  utilisé  pour  traduire  les  chaînes  entre
              guillemets précédés par un $.

       PROMPT_COMMAND
              Lorsque  cette variable contient une valeur, celle-
              ci  est  exécutée  en  tant  que  commande,   avant
              l'affichage  de chacun des symboles d'accueil prin­
              cipaux.

       IGNOREEOF
              Cette variable contrôle le  comportement  du  shell
              lorsqu'il  reçoit un caractère EOF (fin de fichier)
              comme unique entrée. Si elle configurée, la  valeur
              de  cette  variable  correspond  au  nombre  d' EOF
              consécutifs apparaissant  comme  caractère  initial
              d'une  ligne, que bash ignore avant de se terminer.
              Si cette variable existe mais que sa  valeur  n'est
              pas  numérique,  ou si elle n'a pas de valeur, bash
              accepte par defaut 10 EOF consécutifs avant  de  se
              terminer.   Si elle n'existe pas, EOF est considéré
              comme un  terminateur  de  saisie  pour  le  shell.
              Seuls les shells interactifs sont concernés.

       TMOUT  Si  cette variable contient une valeur supérieure a
              zero, celle-ci est considérée  comme  un  delai  en
              secondes,   à  partir  de  l'affichage  du  symbole
              d'accueil principal. Lorsque ce délai sera  écoulé,
              Bash se terminera si aucune saisie n'a eu lieu.

       FCEDIT L'éditeur   par  défaut  utilisé  par  la  commande
              interne fc.

       FIGNORE
              Une liste de suffixes,  séparés  par  des  doubles-
              points `:', que bash ignorera lors de la complétion
              des noms de fichiers (voir le  paragraphe  READLINE
              plus  bas).  Un nom de fichier dont le suffixe cor­
              respond à l'un de ceux mentionnés dans FIGNORE  est
              exclus de la liste des fichiers. Par exemple, cette
              variable peut prendre la valeur ``.o:~''.

       GLOBIGNORE
              Une  liste  de  motifs  séparés  par  des   double-
              points,définissant  la liste des noms de fichiers à
              ignorer lors du développement des chemins.   Si  un
              nom   de   fichier   correspondant   à   un   motif



GNU                      20 Janvier 1999                       19





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              d'expansion, correspond également à un  motif  dans
              GLOBIGNORE,  il est supprimé de la liste des corre­
              spondances.

       INPUTRC
              Le nom du fichier de configuration de readline, par
              défaut ~/.inputrc (voir le paragraphe READLINE plus
              bas).

       notify Si cette variable existe, bash affichera un rapport
              dès  qu'un  travail  en  arrière-plan  se  termine.
              Sinon, il attendra d'avoir à presenter  un  symbole
              d'accueil principal pour afficher son rapport (voir
              également l'option -b de la commande interne  set).
       history_control
       HISTCONTROL
              Si  cette  variable contient la valeur ignorespace,
              les lignes commençant par un caractère d'espacement
              ne  seront  par  mémorisées  dans l'historique.  Si
              elle contient la valeur ignoredups, une ligne  cor­
              respondant   exactement  à  la  ligne  de  commande
              précédente ne sera pas dupliquée dans l'historique.
              La  valeur  ignoreboth  permet de combiner ces deux
              comportements.  Si la variable est  détruite  (com­
              mande  unset),  ou  si  elle  contient  une  valeur
              différente des trois  mentionnées  ci-dessus,  tous
              les   lignes   lues   par   l'interpréteur   seront
              mémorisées dans la liste d'historique.

       command_oriented_history
              Lorsque cette  variable  existe,  bash  essaye   de
              sauver  en une seule entrée d'historique toutes les
              lignes  d'une  même  commande.  Ceci  facilite   la
              ré-édition  des  commandes s'étendant sur plusieurs
              lignes.

       glob_dot_filenames
              Lorsque cette variable est positionnée, bash inclut
              les  fichiers  dont le nom commence par un `.' lors
              du développement des paramètres.

       allow_null_glob_expansion
              Si cette variable existe, bash développe les motifs
              des  noms de fichiers n'ayant aucune correspondance
              en une chaîne nulle, plutot que de  conserver  leur
              propre valeur (voir le paragraphe Développement des
              noms de fichiers plus bas).

       histchars
              Cette variable contient deux  ou  trois  caractères
              contrôlant  le développement de l'historique, et le
              découpage en token (voir le paragraphe EXPANSION DE
              L'HISTORIQUE plus bas). Le premier caractère est le
              caractère de développement de l'historique, c'est à



GNU                      20 Janvier 1999                       20





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              dire  celui qui indique le début d'un développement
              d'historique (normalement  `!').   Le  second  car­
              actère  est  celui  de  subsitution rapide, utilise
              comme   raccourci   pour   relancer   la   commande
              précédente,  en  modifiant une partie de la chaîne.
              Par défaut il s'agit de `^'.  L'éventuel  troisième
              caractère  est  celui  qui  indique,  lorsqu'on  le
              trouve en début de mot que le reste de la ligne est
              un  commentaire.   Normalement  on  utilise le car­
              actère `#'. Ce  caractère  de  commentaire  empêche
              l'expansion  de  l'historique  pour  tous  les mots
              restants sur la ligne. Par contre, il ne s'agit pas
              obligatoirement  du  caractère indiquant un commen­
              taire pour l'interpréteur.

       nolinks
              Si cette variable existe, le shell ne suit pas  les
              liens  symboliques  lorsqu'il  exécute une commande
              modifiant le répertoire de travail.  Il utilise  la
              structure physique des répertoires à la place.  Par
              défaut, bash suit la chaîne logique des répertoires
              lorsqu'il exécute des commandes modifiant le réper­
              toire en cours, comme cd.  Voir aussi  la  descrip­
              tion  de  l'option  -P de la commande interne set (
              COMMANDES INTERNES DU SHELL plus bas).
       hostname_completion_file
       HOSTFILE
              Contient le nom d'un fichier ayant le  même  format
              que  /etc/hosts  qui sera consulté lorsque le shell
              devra compléter un nom d'hôte. Ce fichier peut être
              changé de manière interactive. Lors de la prochaîne
              tentative  pour  compléter  un  nom  d'hôte,   bash
              ajoutera  le  nouveau  fichier à sa base de données
              déjà existantes.

       noclobber
              Si cette variable existe, bash  n'écrasera  pas  un
              fichier existant avec les opérateurs de redirection
              >, >&, et <>.  Cette variable peut être  contournée
              lorsqu'on  crée  un  fichier de sortie en utilisant
              l'opérateur >| à la  place  de  >  (voir  également
              l'option -C de la commande interne set).

       auto_resume
              Cette  variable  configure le comportement du shell
              interactif  vis  à  vis  de  l'utilisateur  et   du
              contrôle  de  jobs.  Si  cette variable existe, les
              commandes simples constituées d'un  seul  mot  sont
              considérées  comme de possibles relances de travaux
              arrêtés.  Aucune  ambiguïté  n'est   possible,   si
              plusieurs  travaux arrêtés commencent par la chaîne
              saisie, bash sélectionne le job  manipulé  le  plus
              récemment. Le nom du job arrêté correspond, dans ce
              contexte, à la ligne de commande utilisée  pour  le



GNU                      20 Janvier 1999                       21





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              lancer.   Si  cette  variable  contient  la  valeur
              exact, la chaîne fournie doit correspondre  exacte­
              ment  au  nom  d'un job arrêté. Si elle contient la
              valeur substring, la chaîne fournie doit correspon­
              dre  à  une  sous-chaîne  du  nom du job arrêté. La
              valeur substring fournit un  comportement  analogue
              au job id %?  (voir CONTRÔLE DES JOBS plus bas). Si
              la variable contient n'importe quelle autre valeur,
              la chaîne fournie doit correspondre à un préfixe du
              nom d'un job arrêté. C'est  analogue  au  fonction­
              nement du job id %.

       no_exit_on_failed_exec
              Si  cette  variable existe, un shell non-interactif
              ne se terminera pas immédiatement si il ne peut pas
              exécuter  un fichier avec la commande interne exec.
              Un shell interactif ne se termine pas  si  un  exec
              échoue.

       cdable_vars
              Si  cette  variable  existe, un argument de la com­
              mande interne cd qui ne soit pas un répertoire, est
              supposé  être  un  nom  de variable dont le contenu
              indique le répertoire destination désiré.

EXPANSION
       Les expansions sont appliquées  à  la  ligne  de  commande
       après  qu'elle  ait  été  divisée  en mots. Il existe sept
       types  de  développements  :  expansion   des   accolades,
       développement  du  tilde,  remplacement  des paramètres et
       variables,   substitution   de    commandes,    évaluation
       arithmétique,  découpage  des  mots,  et développement des
       noms de fichiers.

       L'ordre est :  expansion  des  accolades,  du  tilde,  des
       paramètres,   des  variables,  des  commandes,  évaluation
       arithmétique (selon la méthode gauche-à-droite), découpage
       des mots et développement des noms de fichiers.

       Sur  les  systèmes  qui  le  suppportent, un développement
       supplémentaire a lieu :  la substitution de processus.

       Seuls l'expansion des accolades, le découpage des mots, et
       le  développement des noms de fichiers peuvent modifier le
       nombre de mots. Les autres développement  transforment  un
       mot  unique  en un autre mot unique.  La seule exception à
       cette règle est l'expansion de ``$@'' comme on l'a vu plus
       haut (voir le paragraphe PARAMÈTRES).

   Expansion des accolades
       L'  expansion des accolades est un mécanisme permettant la
       création de  chaînes  quelconques.  Il  est  similaire  au
       développement  des  noms  de  fichiers,  mais  les noms de
       fichiers créés n'existent pas nécessairement.  Les  motifs



GNU                      20 Janvier 1999                       22





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       qui  seront  développes  prennent  la forme d'un préambule
       facultatif, suivi d'une série de chaînes séparées par  des
       virgules,  encadrée  par des accolades. Un postambule peut
       éventuellement suivre la série de chaînes.   Le  préambule
       est  inséré devant chacune des chaînes contenues entre les
       accolades, et le postambule est ajouté à la fin de chacune
       des  chaînes  résultantes,  le développement se faisant de
       gauche à droite.

       Plusieurs   développements   d'accolades   peuvent    être
       imbriqués  les  uns dans les autres. Les chaînes résultant
       de chaque développement ne sont pas triées, l'ordre gauche
       à  droite est conservé. Par exemple a{d,c,b}e se développe
       en `ade ace abe'.

       L'expansion des accolades est effectuée avant  tout  autre
       type  de  développement,  et tous les caractères ayant une
       signification spéciale pour les autres développement  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.

       Une  formule  correcte pour le développement doit contenir
       des accolades ouvrantes et fermantes non protégées, et  au
       moins  une virgule non protégée.  Toute formule incorrecte
       n'est pas développée et reste inchangée.

       Cette construction est généralement  utilisée  comme  rac­
       courci  lorsque  le préfixe commun aux différentes chaînes
       est relativement long :

              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 incompat­
       ibilité  avec  les   versions   traditionnelles   de   sh,
       l'interpréteur Bourne.  sh n'effectue aucun traitement sur
       les accolades ouvrantes et  fermantes  lorsqu'elles  appa­
       raissent  dans  un  mot,  et  les laisse inchangées.  Bash
       suppprime les accolades dans les  mots,  après  développe­
       ment.  Par  exemple si l'on fournit à sh le mot file{1,2},
       il reste inchangé en sortie. Par contre, il est  tranformé
       en  file1  file2  par  bash.  Si une compatibilité stricte
       avec  sh  est  nécessaire,  lancez  bash  avec  l'attribut
       -nobraceexpansion  (voir  OPTIONS plus haut) ou désactivez
       le développement des accolades avec l'option  +o  braceex­
       pand  de  la  commande  set  (voir le paragraphe COMMANDES
       INTERNES DU SHELL plus bas).

   Développement du Tilde
       Si un mot commence avec le caractère tilde (`~'), tous les
       caractères précédant le premier slash (voire tous les car­
       actères s'il n'y a pas de slash), sont considérés comme un



GNU                      20 Janvier 1999                       23





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       nom  de login possible.  Si ce nom de login est une chaîne
       nulle, le tilde est remplacé par la  valeur  du  paramètre
       HOME.   Si HOME n'existe pas, le tilde est remplacé par le
       répertoire de  connexion  de  l'utilisateur  exécutant  le
       shell.

       Si  un  `+'  suit  le  tilde,  ils seront remplacés par la
       valeur du paramètre PWD.  Si un  `-' suit, ils seront rem­
       placés  par  la valeur de OLDPWD.  Si la valeur suivant le
       tilde est un nom de login valide, le tilde, ainsi  que  ce
       nom seront remplacés par le répertoire personnel associé à
       ce nom. Si le nom est invalide, ou si le développement  du
       tilde échoue, le mot est inchangé.

       Chaque affectation de variable est soumis au développement
       du tilde s'il suit le : ou le =.  On  peut  donc  utiliser
       des  chemins  d'accès avec un tilde pour remplir les vari­
       ables PATH, MAILPATH, et CDPATH, et le shell  fournira  la
       valeur correcte.

   Remplacement des paramètres
       Le  caractère  `$' permet d'introduire le remplacement des
       paramètres, la substitution de commandes,  ou  l'expansion
       arithmétique.   Le  nom  du  paramètre  ou  du  symbole  à
       développer peut  être  encadré  par  des  accolades,  afin
       d'éviter  que les caractères suivants ne soient considérés
       comme appartenant au nom de la variable.

       ${paramètre}
              est remplacé par la valeur du paramètre. Les  acco­
              lades  sont  nécessaire  quand  le paramètre est un
              paramètre positionnel ayant plusieurs  chifres,  ou
              si  le  paramètre  est suivi de caractères n'appar­
              tenant pas à son nom.

       Dans chacun des exemples suivants, le mot  est  soumis  au
       développement  du tilde, au remplacement des paramètres, à
       la  substitution   de   commandes,   et   à   l'évaluation
       arithmétique.   Bash  vérifie  si  un paramètre existe, et
       s'il n'est pas nul.  L'omission du double point ne fournit
       qu'un test d'existence.

       ${paramètre:-mot}
              Utilisation   d'une   valeur  par  défaut.   Si  le
              paramètre est inexistant ou nul,  on  substitue  le
              développement  du  mot.  Sinon,  c'est la valeur du
              paramètre qui est fournie.
       ${paramètre:=mot}
              Attribution  d'une  valeur  par  défaut.    Si   le
              paramètre  est  inexistant ou nul, le développement
              du mot lui est affecté.  La valeur du paramètre est
              alors  renvoyée.  Les  paramètres  positionnels, et
              spéciaux ne peuvent  pas  être  affectés  de  cette
              façon.



GNU                      20 Janvier 1999                       24





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       ${paramètre:?mot}
              Affichage d'une erreur si inexistant ou nul.  Si le
              paramètre est inexistant, ou nul, le  développement
              du  mot (ou un message approprié si aucun mot n'est
              fourni) est affiché sur la  sortie  d'erreur  stan­
              dard,  et l'interpréteur se termine, s'il n'est pas
              interactif. Autrement, la valeur du  paramètre  est
              utilisée.
       ${paramètre:+mot}
              Utilisation   d'une   valeur   différente.   Si  le
              paramètre est nul, ou inexistant, rien  n'est  sub­
              stitué.  Sinon le développement du mot est renvoyé.
       ${#paramètre}
              Est remplacé par la longueur, en caractères, de  la
              valeur  du  paramètre.  Si le paramètre est * ou @,
              la  longueur  fournie  est  celle  du  paramètre  *
              développé entre guillemets.
       ${paramètre#mot}
       ${paramètre##mot}
              Le  mot  est développé pour fournir un motif, comme
              dans l'expansion des noms de fichiers. Si le  motif
              correspond  au  debut  de  la  valeur du paramètre,
              alors le développement prend la valeur du paramètre
              après  suppression  du plus petit motif commun (cas
              ``#''), ou du plus long motif (cas ``##'').

       ${paramètre%mot}
       ${paramètre%%mot}
              est développé pour fournir  un  motif,  comme  dans
              l'expansion  des noms de fichiers. Si le motif cor­
              respond à  une  portion  finale  de  la  valeur  du
              paramètre,  alors  le développement prend la valeur
              du paramètre après suppression du plus petit  motif
              commun  (cas  ``%''),  ou  du  plus long motif (cas
              ``%%'').

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


              $(commande)
       ou
              `commande`

       Bash effectue la substitution en exécutant la commande  et
       en la remplaçant par sa sortie standard, dont les derniers
       sauts de lignes sont supprimés.

       Quand l'ancienne forme de  substitution  -avec  les  back­
       quotes  `-  est  utilisée, le caractère backslash garde sa
       signification littérale, sauf s'il est suivi de $,  `,  ou
       \.   Quand  on  utilise  la  forme  $(commande),  tous les



GNU                      20 Janvier 1999                       25





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       caractères  entre  parenthèses   gardent   leurs   valeurs
       littérales. Aucun n'est traité spécifiquement.

       Les  substitutions  de  commandes peuvent être imbriquées.
       Avec l'ancienne forme, il  faut  protéger  les  backquotes
       internes avec un backslash.

       Si la substitution apparaît entre guillemets, le découpage
       des mots, et l'expansion des noms de fichiers ne sont  pas
       effectués.

   Évaluation Arithmétique
       L'évaluation  arithmétique permet de remplacer une expres­
       sion par le résultat de son  évaluation.  Il  existe  deux
       formats d'évaluation arithmétique :

              $[expression]

              $((expression))


       L'expression  est manipulée de la même manière que si elle
       se trouvait entre guillemets, mais un guillemet  se  trou­
       vant  entre  les  crochets  ou  les  parenthèses n'est pas
       traité spécifiquement.   Tous  les  mots  de  l'expression
       subissent le développement des paramètres, la substitution
       des  commandes  et  la  suppression  des  apostrophes   et
       guillemets.  Les  évaluations  arithmétiques  peuvent être
       imbriquées.

       L'évaluation est effectuée  en  suivant  les  règles  men­
       tionnées  dans  le  paragraphe  CALCUL  ARITHMÉTIQUE (plus
       bas).  Si l'expression est invalide, bash affiche un  mes­
       sage  indiquant l'erreur, et aucune substitution n'a lieu.

   Substitution de Processus
       La substitution de processus n'est disponible que sur  les
       systèmes  acceptant  le mécanisme des tubes nommés (FIFOs)
       ou la méthode /dev/fd de noms de fichiers  ouverts.   Elle
       prend  la forme <(liste) ou >(liste).  La liste de proces­
       sus est exécutée avec ses entrées et sorties connectées  à
       une  FIFO  ou  à  un  fichier  dans /dev/fd.  Le nom de ce
       fichier est passé en  argument  à  la  commande  qui  sera
       exécutée  comme  résultat  de cette substitution.  Si l'on
       utilise la forme  >(liste),  l'écriture  dans  le  fichier
       fournira  des entrées pour la liste.  Si la forme <(liste)
       est utilisée, le fichier passe en argument devra  être  lu
       pour obtenir la sortie de la liste.

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




GNU                      20 Janvier 1999                       26





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


   Séparation des mots
       Les résultats du remplacement des paramètres, de  la  sub­
       stitution  de  commandes, et de l'évaluation arithmétique,
       qui ne se trouvent pas entre guillemets sont analysés  par
       le shell afin d'appliquer le découpage des mots.

       L'interpréteur considère chaque caractère du paramètre IFS
       comme un délimiteur, et redécoupe le résultat  des  trans­
       formations  précédentes  en  fonction  de  ceux-ci.  Si la
       valeur du paramètre IFS  est  exactement  <espace><tabula­
       tion><retour-chariot>, (la valeur par défaut), alors toute
       séquence de caractères IFS sert à délimiter les mots.   Si
       IFS  a  une  valeur  autre que celle par défaut, alors les
       séquences de caractères blancs espace et  tabulation  sont
       ignorées  en début et fin de mot, à condition que ces car­
       actères blancs se trouvent dans la valeur  de  IFS.   Tout
       autre  caractère  de IFS se trouvant à côté d'un caractère
       blanc de IFS, sert à délimiter un champ.  Une séquence  de
       caractères  blancs  de  IFS est également traitée comme un
       séparateur.   Si  la  valeur  de  IFS  est  nulle,   aucun
       découpage  de mot n'a lieu.  IFS ne peut pas être détruit.

       Les arguments nuls explicites ("" ou '')  sont  conservés.
       Les  arguments nuls implicites, résultant du développement
       des paramètres n'ayant pas de valeurs, sont éliminés.

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

   Développement des noms de fichiers
       Apres  le  découpage des mots, et si l'option -f n'est pas
       indiquée, bash recherche dans chaque mot les caractères *,
       ?,  et  [.   Si  l'un d'eux apparaît, le mot est considéré
       comme un motif, et remplacé par  une  liste,  classée  par
       ordre  alphabétique,  des noms de fichiers correspondant à
       ce motif.  Si aucun nom de fichiers ne correspond,  et  si
       la variable allow_null_glob_expansion n'existe pas, le mot
       reste inchangé.  Si la variable existe, et si aucune  cor­
       respondance  n'est  trouvée, le mot est éliminé.  Quand un
       motif est utilisé pour créer des chemins d'accès, le  car­
       actère  ``.''   au  début  d'un nom, ou immédiatement à la
       suite d'un slash doit être explicitement mis en correspon­
       dance,  à  moins  que la variable shell glob_dot_filenames
       n'existe.  Dans tous les autres cas,  le  caractère  ``.''
       n'est  pas traité spécifiquement.  Le caractère slash doit
       toujours être mis en correspondance explicitement.

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

       *      Correspond  à n'importe quelle chaîne, y compris la
              chaîne vide.
       ?      Correspond à n'importe quel caractère.
       [...]  Correspond à l'un des  caractères  entre  crochets.
              Une  paire  de  caractères  séparés  par  un  signe



GNU                      20 Janvier 1999                       27





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              "moins" indique un  intervalle;  qui  correspond  à
              n'importe  quel  caractère  situé  entre  les  deux
              bornes incluses.  Si le premier  caractère  suivant
              le  [  est un !  ou un ^ alors la correspondance se
              fait sur les caractères non-inclus.  Un - ou  un  ]
              peuvent  être mis en correspondance en les incluant
              en premier ou dernier caractère de l'ensemble.

   Suppression des protections
       Après les développements précédents, toutes les occurences
       non-protégées des caractères \, `, et " sont supprimées.

REDIRECTION
       Avant qu'une commande ne soit exécutée, il est possible de
       rediriger son entrée et sa sortie en utilisant  une  nota­
       tion spéciale qui sera interprétée par le shell. Les redi­
       rections peuvent également servir à ouvrir ou  fermer  des
       fichiers   dans  l'environnement  actuel  du  shell.   Les
       opérateurs de redirection décrits ci-dessous peuvent appa­
       raitre  avant,  ou au sein d'une commande simple ou suivre
       une commande.  Les redirections sont traitées dans l'ordre
       d'apparition de gauche à droite.

       Dans  les descriptions suivantes, si le numéro de descrip­
       teur de fichier est omis, et si le  premier  caractère  de
       l'opérateur  de redirection est <, celui-ci correspondra à
       l'entrée standard (descripteur de fichier 0).  Si le  pre­
       mier  caractère  de  l'opérateur  est  >,  la  redirection
       s'appliquera à la sortie standard (descripteur de  fichier
       1).

       Le  mot  qui  suit  l'operateur  de  redirection  dans les
       descriptions suivantes est soumis à l'expansion des  acco­
       lades, du tilde, des paramètres, à la substitution de com­
       mandes, à l'évaluation arithmétique, à la suppression  des
       protections,  et  au  développement  des noms de fichiers.
       S'il se modifie pour donner plusieurs mots, bash détectera
       une erreur.

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

              ls > liste_répertoires 2>&1

       redirige a  la  fois  la  sortie  standard  et  la  sortie
       d'erreur  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 a été renvoyée
       vers  la  sortie  standard  avant  que  celle-ci  ne  soit
       redirigée vers liste_répertoires.



GNU                      20 Janvier 1999                       28





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


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

              [n]<mot

       Lorsque l'on applique une redirection d'entrée, le fichier
       dont le nom résulte du développement du mot sera ouvert en
       lecture avec le descripteur de fichier  numéro  n,  ou  en
       tant  qu'entrée  standard  (descripteur de fichier 0) si n
       n'est pas mentionné.

   Redirection de sortie
       Le format général des redirections de sortie est le  suiv­
       ant :

              [n]>mot

       Lors  d'une  redirection de sortie, le fichier dont le nom
       résulte du développement du mot est  ouvert  en  écriture,
       avec  le  descripteur  de fichier n, ou en tant que sortie
       standard (descripteur de fichier 1) si n  n'est  pas  men­
       tionné.   Si  le  fichier  n'existe pas, il est créé. S'il
       existait déjà, sa taille est ramenée à 0.

       Si l'opérateur de redirection est >|, alors la  valeur  de
       l'option -C de la commande interne set est ignorée, et une
       tentative  de  création  de  fichier  a  lieu.   (Voir  la
       description  de  noclobber dans le paragraphe Variables du
       Shell plus haut).

   Redirection pour Ajout en Sortie
       Le format général pour la redirection de sortie avec ajout
       est :

              [n]>>mot

       Lorsqu'on redirige ainsi la sortie, le fichier dont le nom
       résulte du développement du mot est ouvert pour  ajout  en
       fin de fichier, avec le descripteur n, ou en tant que sor­
       tie standard (descripteur 1) si n n'est pas mentionné.  Si
       le fichier n'existe pas, il est créé.


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

       Il y a deux formes pour effectuer cette double redirection
       :

              &>mot



GNU                      20 Janvier 1999                       29





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


       et
              >&mot

       On préfère généralement la première.  Elle est sémantique­
       ment équivalente à

              >mot 2>&1

   Document en ligne
       Avec ce type de redirection, le shell va lire  son  entrée
       standard  jusqu'à  ce  qu'il  atteigne une ligne contenant
       uniquement le mot prévu (sans espaces à la suite),  nommée
       étiquette.    Une   fois   cette  étiquette  atteinte,  il
       exécutera la  commande  demandée  en  lui  fournissant  en
       entrée  le  texte  lu  avant l'étiquette, que l'on appelle
       document en ligne.

       Le format des documents en ligne est le suivant :

              <<[-]mot
                      document en ligne
              étiquette

       Il n'y a ni remplacement de paramètre, ni substitution  de
       commande,  ni  développement de chemin d'acces, ni évalua­
       tion arithmétique sur le mot.  Si l'un des  caractères  du
       mot est protégé, l'étiquette est obtenue après suppression
       des protections dans le mot, et les lignes du document  ne
       sont pas développées. Sinon, toutes les lignes du document
       sont soumises au remplacement des paramètres, à la substi­
       tution  de commandes, et à l'évaluation arithmétique. Dans
       ce  dernier  cas,  les  couples   \<retour-chariot>   sont
       ignorés,  et  \  doit  être utilisé pour protéger les car­
       actères \, $, et `.

       Si l'opérateur de redirection est <<-, alors  les  tabula­
       tions  en  tête de chaque ligne sont supprimées, y compris
       dans la ligne contenant l'étiquette.  Ceci permet d'inden­
       ter  de  manière  naturelle les documents en ligne au sein
       des scripts.

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

              [n]<&mot

       permet  de  dupliquer  les  descripteurs  de  fichiers  en
       entrée.   Si  le  mot  se  transforme  en  un ou plusieurs
       chiffres, le descripteur de fichier n devient une copie de
       ce descripteur. Si le mot prend la forme -, le descripteur
       n est  fermé.   Si  n  n'est  pas  mentionné,  on  utilise
       l'entrée standard (descripteur 0).

       L'opérateur



GNU                      20 Janvier 1999                       30





BASH(1)           Manuel de l'utilisateur Linux           BASH(1)


              [n]>&mot

       est  utilisé  de  manière  similaire  pour  dupliquer  les
       descripteurs de sortie.  Si n n'est pas précisé,  on  con­
       sidère la sortie standard (descripteur 1).  Un cas partic­
       ulier se produit si n est omis, et si mot ne se  développe
       pas sous forme de chiffres. Alors, les sorties standard et
       d'erreurs sont toutes deux redirigées comme précédement.

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

              [n]<>mot

       ouvre à la fois en lecture et en écriture le fichier  dont
       le  nom résulte du développement du mot, et lui affecte le
       descripteur de fichier n, ou bien  les  entrée  et  sortie
       standard  si n n'est pas mentionné. Si le fichier n'existe
       pas, il est créé.

FONCTIONS
       Une fonction du shell mémorise une série de commandes pour
       permettre  une  exécution  ulterieure. La definition d'une
       fonction est décrite plus haut, dans le  paragraphe  GRAM­
       MAIRE DU SHELL.  Les fonctions sont exécutées dans le con­
       texte de l'interpréteur en cours.  On ne crée pas de  nou­
       veau  processus  pour interpréter une fonction, contraire­
       ment à l'exécution d'un script.  Les arguments d'une fonc­
       tion  sont  placés dans les paramètres positionnels durant
       son exécution.  Le paramètre spécial # est mis a jour.  Le
       paramètre positionnel 0 n'est pas modifié.

       La variables locales d'une fonction peuvent être déclarées
       en utilisant la commande interne  local.   Autrement,  les
       variables  et  leurs valeurs sont partagées entre la fonc­
       tion et son appelant.

       Si la commande interne return est exécutée dans une  fonc­
       tion,  celle-ci  se termine et l'exécution reprend avec