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 la
       commande suivant l'appel de fonction.  Quand une  fonction
       se  termine,  les  paramètres positionnels et le paramètre
       spécial # reprennent  les  valeurs  qu'ils  avaient  avant
       l'appel de fonction.

       Les  noms  des fonctions et leurs définitions peuvent être
       affichés en utilisant l'option -f des  commandes  internes
       declare  ou typeset.  Les fonctions peuvent être exportées
       avec l'option -f de la commande interne  export,  afin  de
       rester définies dans les sous-shells.

       Les fonctions peuvent être récursives. Aucune limite n'est
       imposée quant au nombre d'appels récursifs.





GNU                      20 Janvier 1999                       31





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


ALIAS
       L'interpréteur gère une liste  d'alias  qui  peuvent  être
       créés  et  détruits  avec  les commandes internes alias et
       unalias (voir le paragraphe COMMANDES  INTERNES  DU  SHELL
       plus  bas).   Le shell vérifie si le premier mot de chaque
       commande (à condition qu'il ne soit pas  protégé)  est  un
       alias. Si tel est le cas, ce mot est remplacé par le texte
       de l'alias.  Le nom de l'alias, ainsi que le texte de rem­
       placement,  peuvent  contenir  n'importe  quels caractères
       valides pour  le  shell,  y  compris  les  méta-caractères
       présentés  plus  haut.  Une exception toutefois, le nom de
       l'alias ne peut pas contenir  de  caractère  =.  Le  shell
       vérifie  si  le premier mot du texte de remplacement est à
       son tour le nom d'un alias, mais s'il est identique au nom
       de  l'alias il ne sera pas remplacé à nouveau. Ceci permet
       par exemple de créér un alias pour ls valant  ls  -F,  que
       bash  n'essaiera  pas  de développer récursivement.  Si le
       dernier caractère du texte de remplacement est  un  blanc,
       alors on vérifiera également si le mot suivant l'alias est
       lui aussi un alias.

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

       Il  n'existe  pas  de  mécanisme permettant d'utiliser des
       arguments dans le texte de remplacement,  contrairement  à
       l'interpreteur csh.  Si l'on a besoin de traiter des argu­
       ments, il faut utiliser une fonction du shell.

       Les alias ne sont développés qu'avec les shells  interact­
       ifs.

       Les  règles  concernant la définition et l'utilisation des
       alias sont un peu confuses.  Bash lit  toujours  au  moins
       une  ligne d'entrée complètement avant d'exécuter une com­
       mande de cette ligne. Les alias sont  traités  lorsque  la
       commande  est  lue,  et  non pas lorsqu'elle est exécutée.
       Ainsi, une définition d'alias  apparaissant  sur  la  même
       ligne  qu'une  autre  commande ne prend pas effet avant la
       lecture de la prochaine ligne  d'entrée.   Autrement  dit,
       une  commande  placée à la suite d'une définition d'alias,
       sur la même ligne ne sera pas affectée par cet alias.   Ce
       comportement  est  également important lors de l'exécution
       des fonctions. Les alias sont traités lorsque  la  défini­
       tion   de  la  fonction  est  lue,  et  non  pas  lors  de
       l'exécution de cette fonction.  Ainsi  des  alias  définis
       dans  une  fonction  ne  sont  pas  actifs avant la fin de
       l'exécution de la  fonction.  Pour  plus  de  tranquilité,
       placez  toujours  les  définitions  d'alias sur des lignes
       isolées, et n'utilisez jamais la commande alias  dans  les
       commandes composées.

       Notez  enfin  que la plupart du temps les alias sont avan­
       tageusement remplacés par des fonctions du shell.



GNU                      20 Janvier 1999                       32





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


CONTRÔLE DES JOBS
       Le contrôle des jobs permet d'arrêter (suspend) sélective­
       ment  l'exécution  d'un  processus,  et  de  la  reprendre
       (resume)    ultérieurement.     L'utilisateur    bénéficie
       généralement  de  cette  possibilité grâce à l'action con­
       jointe du pilote de terminal et de bash.

       L'interpréteur associe un job à chaque tube. Il  maintient
       une  table des jobs en cours d'exécution, cette table pou­
       vant être affichée avec  la  commande  jobs.   Quand  bash
       lance  un  job de manière asynchrone (en arrière-plan), il
       affiche une ligne du genre :

              [1] 25647

       Cette ligne indique que le job est associé au numéro 1, et
       que  le  PID  du dernier processus dans le tube est 25647.
       Tous les processus dans un tube simple font partie du même
       job.   Bash utilise la notion de job comme une abstraction
       pour aider à les contrôler.

       Pour faciliter l'implémentation d'une  interface  utilisa­
       teur  pour  le  contrôle  de  job, le système introduit la
       notion d'ID de groupe de processus associés à un terminal.
       Les membre de ce groupe de processus (ceux dont le GID est
       égal au Process Group ID du terminal) recoivent  les  sig­
       naux déclenchés par le clavier, comme SIGINT.  Ces proces­
       sus sont dits en avant-plan.  Les  processus  en  arrière-
       plan  sont  ceux  dont  le Process-GID differe de celui du
       terminal, ceux qui ne reçoivent pas les signaux déclenchés
       par le clavier.  Seuls les processus en avant-plan peuvent
       lire depuis le terminal ou écrire dessus.   Les  processus
       en  arrière-plan  qui  tentent une lecture sur le terminal
       (ou une écriture dessus), reçoivent  les  signaux  SIGTTIN
       (SIGTTOU)  émis par le pilote de péripherique du terminal,
       lesquels signaux suspendent l'exécution du processus (sauf
       interception du signal).

       Si  le  système  d'exploitation sur lequel bash fonctionne
       permet le contrôle des jobs, bash vous y donne accès.   La
       frappe   d'un   caractère   suspension  (généralement  ^Z,
       Contrôle-Z)  pendant  l'exécution  d'un  processus  arrête
       celui-ci,  et redonne la main à bash.  La frappe d'un car­
       actère suspension différée (généralement  ^Y,  Contrôle-Y)
       arrêtera  le  processus  au  moment  où il tentera de lire
       depuis le terminal, et la main reviendra à bash.   Il  est
       possible de manipuler ces jobs en utilisant la commande bg
       (background = arrière-plan) pour continuer l'exécution  en
       arrière-plan,  fg (foreground) pour la reprendre en avant-
       plan, ou encore la commande kill pour tuer  le  processus.
       Un ^Z prend effet immédiatement, et élimine les sorties en
       attente.

       Il y a plusieurs manières de faire référence à un job.  Le



GNU                      20 Janvier 1999                       33





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


       caractère  % introduit un nom de job. Le job numéro n peut
       être noté %n.  On peut également faire référence à un  job
       en  utilisant un préfixe du nom utilise pour le lancer, ou
       une partie de la ligne de commande.  Par exemple,  %ce  se
       réfère à un job arrêté nomme ce.  Si ce préfixe correspond
       à plusieurs jobs, bash renverra une erreur. D'autre  part,
       %?ce,  fait  référence  à  n'importe quel job contenant la
       chaîne ce dans sa ligne de  commande.  Si  la  sous-chaîne
       correspond à plusieurs jobs, bash renverra une erreur. Les
       symboles %% et %+ référencent le  job  courant  du  shell,
       c'est à dire le dernier job arrêté alors qu'il se trouvait
       en avant-plan.  Le job précédent peut  être  mentionné  en
       utilisant  %-.  Dans les affichages se rapportant aux jobs
       (par exemple ceux de la commande jobs le job  courant  est
       toujours  indiqué par un +, et le job précédent avec un -.

       Il suffit de nommer un job pour le ramener en avant-plan :
       %1  est  synonyme  de ``fg %1'', et ramène le job 1 depuis
       l'arrière-plan  vers  l'avant-plan.   De  même,  ``%1  &''
       relance  le  job  1,  mais  en arrière-plan cette fois, de
       manière équivalente à ``bg %1''.

       Le shell est immédiatement prévenu  lorsqu'un  job  change
       d'état.   Normalement  bash  attend d'être prêt à afficher
       son symbole d'accueil avant de fournir un rapport sur  les
       changements  dans les statut des jobs, afin de ne pas per­
       turber les autres affichages.  Avec l'option -b de la com­
       mande   interne  set,  bash  affichera  les  modifications
       immédiatement (Voir aussi la description  de  la  variable
       notify dans le paragraphe Variables du Shell plus haut.)

       Si  vous  essayez  de quitter bash alors que des jobs sont
       suspendus, le shell affichera un message  d'avertissement.
       Vous  pouvez alors utiliser la commande jobs pour vérifier
       leurs états. Une fois cette commande invoquée, ou si  vous
       essayez  à  nouveau  de quitter le shell immédiatement, il
       n'y aura  plus  d'avertissement,  et  les  jobs  suspendus
       seront définitivement terminés.

SIGNAUX
       Quand bash fonctionne de manière interactive, il ignore le
       signal SIGTERM (c'est pourquoi kill 0 ne tue pas un  shell
       interactif),  et  le  signal SIGINT est intercepté et géré
       (c'est pourquoi la commande interne wait n'est pas  inter­
       ruptible).   Dans  tous  les  cas,  bash  ignore le signal
       SIGQUIT.  Si le contrôle  de  jobs  est  disponible,  bash
       ignore les signaux SIGTTIN, SIGTTOU, et SIGTSTP.

       Les  jobs synchrones lancés par bash reçoivent les valeurs
       des signaux héritées par le shell de leur  parent.   Quand
       le  contrôle  de job n'est pas actif, les jobs en arrière-
       plan (démarrés avec &)  ignorent  les  signaux  SIGINT  et
       SIGQUIT.   Les commandes exécutées en tant que résultat de
       la substitution  de  commandes  ignorent  les  signaux  de



GNU                      20 Janvier 1999                       34





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


       contrôle  de jobs émis par le clavier SIGTTIN, SIGTTOU, et
       SIGTSTP.

ÉXÉCUTION DES COMMANDES
       Apres le découpage de la ligne de commande en mots, si  le
       résultat  est  une commande simple suivie d'une éventuelle
       liste d'arguments, les actions suivantes sont  effectuées.

       Si  le  nom  de  la  commande ne contient pas de slash, le
       shell tente de la trouver. S'il existe une fonction  shell
       de  ce nom, elle est appelée comme nous l'avons vu dans le
       paragraphe FONCTIONS plus-haut.  Si le nom n'est pas celui
       d'une  fonction, l'interpréteur le recherche dans la liste
       des fonctions internes. Si une équivalence est trouvée, la
       fonction interne est invoquée.

       Si  le  nom  n'est ni celui d'une fonction shell, ni celui
       d'une commande interne, et s'il ne contient pas de  slash,
       bash va chercher dans chacun des membres de PATH un réper­
       toire contenant un fichier exécutable du nom  désiré.   Si
       la  recherche  est infructueuse, l'interpréteur affiche un
       message d'erreur et renvoie un code de retour non nul.

       Si la recherche réussit, ou si le nom de la commande  con­
       tient  au  moins  un  slash, le shell exécute le programme
       voulu.  L'argument 0 est rempli avec le nom fourni, et les
       autres  arguments  seront  éventuellement  remplis avec le
       reste de la ligne de commande.

       Si l'exécution échoue parce que le programme n'est pas  un
       exécutable,  et  si le fichier n'est pas un répertoire, on
       le considère alors comme un script shell, un fichier  con­
       tenant  une  série  de commandes.  Un sous-shell est alors
       créé pour exécuter ce script.   Ce  sous-shell  se  réini­
       tialisera  lui-même,  comme  si un nouveau shell avait été
       invoqué pour exécuter le script,  à  la  difference  qu'il
       continuera à mémoriser l'emplacement des commandes connues
       de son parent (voir  hash  dans  le  paragraphe  COMMANDES
       INTERNES DU SHELL plus bas).

       Si le programme est un fichier commençant par #!, le reste
       de la première ligne indique un interpréteur pour ce  pro­
       gramme.  Le shell se chargera d'exécuter cet interpréteur,
       si le système d'exploitation ne gère pas lui-même ce  for­
       mat d'exécutable.  Les arguments de l'interpréteur consis­
       tent  en  un  premier  argument  éventuel  fourni  sur  la
       première   ligne   du   fichier  à  la  suite  du  nom  de
       l'interpréteur, suivi du nom du programme, suivi des argu­
       ments de la commande s'il y en a.

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



GNU                      20 Janvier 1999                       35





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


       Le  shell permet de manipuler l'environnement de plusieurs
       façons.  Au démarrage, le shell analyse son  propre  envi­
       ronnement, et crée un paramètre pour chaque nom trouvé, en
       le marquant comme exportable vers les processus fils.  Les
       commandes  exécutées  héritent  de  cet environnement. Les
       commandes export et declare -x permettent d'ajouter ou  de
       supprimer  des  paramètres  ou des fonctions de l'environ­
       nement. Si la valeur d'un paramètre de l'environnement est
       modifiée, la nouvelle valeur devient une partie de l'envi­
       ronnement, et elle  remplace  l'ancienne.  L'environnement
       hérité  par  les  commandes  exécutées est l'environnement
       initial du shell  (dont  les  valeurs  peuvent  être  mod­
       ifiées),  moins  les  éléments  supprimés  par la commande
       unset, plus les éléments ajoutés par les commandes  export
       et declare -x.

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

       Si l'option -k est utilisée (voir la commande interne  set
       plus  bas),  alors  toutes  les affectations de paramètres
       sont placées dans l'environnement d'une commande exécutée,
       pas seulement celles qui précèdent son nom.

       Quand  bash  invoque  une  commande externe, la variable _
       contient le chemin d'accès complet à  cette  commande,  et
       elle est transmise dans l'environnement.

CODE DE RETOUR
       Au  niveau  du  shell, une commande qui se termine avec un
       code de retour nul est considérée comme réussie.  Le  zéro
       indique  le  succès.  Un code de retour non-nul indique un
       echec.  Quand une commande se termine à cause d'un  signal
       fatal,  bash  utilise  la  valeur 128+signal comme code de
       retour.

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

       Bash lui-même renvoie le code de  retour  de  la  dernière
       commande  exécutée, à moins qu'une erreur de syntaxe ne se
       produise, auquel cas il renvoie une valeur non-nulle. Voir
       également la commande interne exit plus bas.

SYMBOLE D'ACCUEIL (PROMPT)
       Quand  il est exécuté de manière interactive, bash affiche
       le symbole d'accueil principal PS1 dès qu'il  est  prêt  à
       lire  une commande, et le symbole d'accueil secondaire PS2
       quand il a besoin de plus de  données  pour  exécuter  une



GNU                      20 Janvier 1999                       36





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


       commande.    Bash  permet  de  personnaliser  ces  chaînes
       d'accueil,  en  insérant   des   séquences   d'échappement
       spéciales  (préfixées par un backslash) ayant les signifi­
       cations suivantes :
              \t     l'heure actuelle au format HH:MM:SS
              \d     la date au format  "Jour_de_la_semaine  Mois
                     Quantième" (ex : "Tue May 26")
              \n     retour-chariot
              \s     le nom du shell, c'est à dire le nom de base
                     de $0 (la portion suivant le dernier slash)
              \w     le répertoire de travail en cours
              \W     le nom de base du répertoire de  travail  en
                     cours
              \u     le nom de l'utilisateur
              \h     le nom d'hôte de la machine
              \#     le numéro de la commande
              \!     le numéro d'historique de la commande
              \$     # si l'UID effectif est 0, $ sinon
              \nnn   le caractère de code octal nnn
              \\     un backslash
              \[     débute   une   série   de   caractères  non-
                     imprimables, qui  permettent  d'inclure  des
                     séquences  de  contrôle de terminal dans une
                     chaîne d'accueil
              \]     fin   d'une   série   de   caractères   non-
                     imprimables

       Le  numéro  de  commande,  et  le numéro d'historique sont
       généralement différents :  le  numéro  d'historique  d'une
       commande  correspond  à  sa  position dans la liste d'his­
       torique qui peut  contenir  des  commandes  relues  depuis
       cette  liste  (voir  le  paragraphe  HISTORIQUE plus bas),
       alors que le numéro de commande est simplement  une  posi­
       tion  dans  la  séquence  de commandes exécutées depuis le
       début de la session shell actuelle.  Apres que  la  chaîne
       d'invite  ait  été décodée, elle est soumise à l'expansion
       des  paramètres,  substitution  de  commandes,  évaluation
       arithmétique et découpage des mots.

BIBLIOTHÈQUE READLINE
       Il  s'agit  de la bibliothèque qui gère la saisie lors des
       sessions interactives  du  shell,  à  moins  que  l'option
       -nolineediting n'ait été choisie. Par défaut les commandes
       d'édition de ligne sont similaires à  celles  d'emacs.  Il
       est   également   possible  de  disposer  d'une  interface
       d'édition du style vi.

       Dans ce paragraphe on utilisera la notation "à  la  emacs"
       pour  indiquer  les  séquences  de  touches.  Les  touches
       Contrôle sont notées C-touche, par  exemple  C-n  signifie
       Contrôle-N.   De  même,  les  touches Méta sont notées par
       M-touche, ainsi M-x signifie Méta-X.   (Sur  les  claviers
       sans  touches  Méta,  M-x signifie ESC x (sur les claviers
       français ESC est noté Échappement), autrement dit  presser



GNU                      20 Janvier 1999                       37





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


       la  touche  Échappement  puis  la  touche x.  On dit alors
       qu'ESC est le préfixe méta.  La  séquence  M-C-x  signifie
       ESC-Contrôle-x,  ou  encore  Presser la touche Échappement
       puis maintenez la touche Contrôle enfoncée tout  en  pres­
       sant la touche x.

       L'affectation  par  défaut  des touches peut être modifiée
       dans le fichier ~/.inputrc.   La  valeur  de  la  variable
       shell  INPUTRC, si elle existe, est utilisée à la place du
       fichier ~/.inputrc.   D'autres  programmes  qui  utilisent
       cette  bibliothèque peuvent ajouter leurs propres affecta­
       tions de touches.

       Par exemple, en plaçant

              M-Control-u: universal-argument
       ou
              C-Meta-u: universal-argument
       dans le fichier ~/.inputrc, on affectera à la séquence  de
       touche M-C-u la commande readline universal-argument.

       Les   caractères  symboliques  suivants  sont  acceptés  :
       RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN,  SPC,  SPACE,
       et  TAB.   En  plus des noms de commandes, readline permet
       d'affecter aux  touches  des  chaînes  de  caractères  qui
       seront  insérées  lorsque  la  touche  sera  pressée  (une
       macro).

       Readline peut être personnalisé en ajoutant des  commandes
       dans  le  fichier d'initialisation dont le nom est contenu
       dans la variable INPUTRC, ou, s'il elle n'existe pas, dans
       le  fichier ~/.inputrc.  Quand un programme qui utilise la
       bibliothèque readline démarre, le fichier d'initialisation
       est  lu,  et  les  affectations de touches et de variables
       sont effectuées.   Il  n'y  a  que  peu  de  constructions
       autorisées  dans  le fichier d'initialisation.  Les lignes
       blanches sont ignorées. Les lignes commençant par  #  sont
       considérées  comme des commentaires, les lignes commençant
       par un $ indique  une  construction  conditionnelle.   Les
       autres  lignes  contiennent les affectations de touches et
       les assignations de variables.

       La syntaxe des affectations de  touches  dans  le  fichier
       ~/.inputrc est simple.  Les seules choses nécessaires sont
       le nom d'une commande, ou le  texte  d'une  macro,  et  la
       séquence  de  touches  à laquelle il faut l'affecter.  Les
       touches peuvent être indiquées de  deux  manières  :  sous
       forme  de  nom symbolique, éventuellement précédé de Meta-
       ou Control-, ou sous forme de séquence de touches. Lorsque
       l'on  utilise  la  forme  touche:nom_de_fonction ou macro,
       touche est le nom de la  séquence  de  touches  épelée  en
       Anglais. Par exemple :

              Control-u: universal-argument



GNU                      20 Janvier 1999                       38





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


              Meta-Rubout: backward-kill-word
              Control-o: ">&sortie"

       Dans  ces  exemples, C-u est assigné à la fonction univer­
       sal-argument, M-DEL à la fonction  backward-kill-word,  et
       C-o  est affecté à la macro exprimée dans la partie gauche
       (c'est à dire insèrera >&sortie sur la ligne).

       Avec la seconde forme, "touches":nom_de_fonction ou macro,
       touches  n'est  plus  un  nom  symbolique, mais décrit une
       séquence complète de touches entre  guillemets.  Certaines
       séquences  d'échappement  dans  le style GNU Emacs peuvent
       être utilisée, comme dans l'exemple suivant :

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

       Dans cet exemple, C-u est à nouveau assigné à la  fonction
       universal-argument,     C-x     C-r    à    la    fonction
       re-read-init-file, et ESC [ 1 1 ~ insèrera le texte Touche
       Fonction  1.   L'ensemble complet des séquences d'échappe­
       ment est le suivant :

              \C-    préfixe Contrôle

              \M-    préfixe Méta

              \e     caractère d'échappement

              \\     backslash

              \"     un guillemet littéral

              \'     un apostrophe littéral

       Lorsque l'on saisit le texte d'une macro, il faut utiliser
       des apostrophes ou des guillemets pour indiquer la défini­
       tion de la macro. Les textes non protégés sont  considérés
       comme  des  noms  de  fonctions.   Le  backslash protègera
       n'importe quel caractère dans la définition d'une macro, y
       compris " et '.

       Bash permet d'afficher ou de modifier les affectations des
       touches avec la commande interne bind.  On peut changer de
       mode d'édition durant une session interactive en utilisant
       l'option -o de la commande interne set (voir le paragraphe
       COMMANDES INTERNES DU SHELL plus bas).

       Readline  dispose de variables permettant de personnaliser
       encore plus son comportement. Une variable peut être  con­
       figurée dans le fichier inputrc avec une déclaration de la
       forme




GNU                      20 Janvier 1999                       39





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


              set nom_de_variable valeur

       Sauf contre-indication, les variables de readline prennent
       les  valeurs  On  ou Off.  Les variables, et leurs valeurs
       par défaut, sont :

       horizontal-scroll-mode (Off)
              Si cette variable contient la valeur  On,  readline
              utilisera  une  seule ligne d'affichage, et la fera
              défiler horizontalement si elle devient plus longue
              que  la  largeur de l'écran, plutôt que de basculer
              sur une nouvelle ligne.
       editing-mode (emacs)
              Cette variable indique si  readline  doit  démarrer
              avec des affectations de touches similaires à emacs
              ou à vi.  editing-mode  peut  prendre  les  valeurs
              emacs ou vi.
       mark-modified-lines (Off)
              Si cette variable est configurée sur On, les lignes
              d'historique qui ont été modifiées seront précédées
              à l'affichage d'un astérisque (*).
       bell-style (audible)
              Cette  variable permet de contrôler le comportement
              de readline lorsqu'il  faut  déclencher  le  signal
              sonore  du  terminal. Si cette variable contient la
              valeur  none,  readline  n'utilise  pas  le  signal
              sonore ; si elle contient visible, readline utilise
              un avertisseur visuel si c'est possible ;  si  elle
              contient  audible,  readline  essaie  d'utiliser le
              signal sonore du terminal.
       comment-begin (``#'')
              Cette chaîne est insérée dans le mode vi  quand  la
              commande vi-comment est exécutée.
       meta-flag (Off)
              Si  cette  variable contient la valeur On, readline
              acceptera des saisies sur huit bits (autrement  dit
              il ne supprimera pas le huitième bit), quelque soit
              le terminal utilisé.
       convert-meta (On)
              Si cette variable contient la valeur  On,  readline
              transformera  en  séquences  ASCII  les  caractères
              ayant leur  huitième  bit  à  1.  Il  suprimera  ce
              huitième  bit,  et  insèrera  comme préfixe le car­
              actère d'échappement  (en  utilisant  ce  caractère
              d'échappement comme préfixe méta).
       output-meta (Off)
              Si  cette  variable contient la valeur On, readline
              affichera directement  les  caractères  ayant  leur
              huitième   bit  à  1,  plutôt  que  d'utiliser  une
              séquence d'échappement avec le préfixe méta.
       completion-query-items (100)
              Lors de la complétion de commandes, si le nombre de
              possibilités  est  supérieur  à  cette  valeur,  on
              demandera  confirmation   à   l'utilisateur   avant



GNU                      20 Janvier 1999                       40





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


              d'afficher  la liste des possibilités. Le nombre de
              complétions possibles est déterminé par la commande
              possible-completions.
       keymap (emacs)
              Configure   l'affectation  des  touches.  Les  jeux
              d'affectations disponibles sont emacs,  emacs-stan­
              dard,  emacs-meta, emacs-ctlx, vi, vi-move, vi-com­
              mand, et vi-insert.  vi est  équivalent  à  vi-com­
              mand;  emacs  est  équivalent à emacs-standard.  La
              valeur par defaut est emacs; notez que la  configu­
              ration  de  la  variable editing-mode modifie aussi
              l'affectation par défaut.
       show-all-if-ambiguous (Off)
              Cette variable agit sur la complétion  des  comman­
              des.  Lorsqu'elle contient la valeur on, toutes les
              complétions possibles sont affichées  immédiatement
              plutôt que de déclencher l'avertisseur sonore.
       expand-tilde (Off)
              Si   cette  variable  contient  la  valeur  on,  le
              développement du tilde est effectué  lorsque  read­
              line tente une complétion de commandes.

       Readline  propose un mécanisme inspiré des possibilités de
       compilation conditionnelle en C,  qui  permet  d'effectuer
       certaines  assignations  de  variables, ou affectations de
       touches en fonction du résultat d'un test. Il  y  a  trois
       directives utilisables.

       $if    La  structure  $if permet d'affecter les touches en
              fonction du mode d'édition, du terminal de  saisie,
              ou  de  l'application  qui  utilise la bibliothèque
              readline. Le texte du test se trouve à la suite  du
              $if, jusqu'à la fin de la ligne.

              mode   La forme mode= de la structure $if permet de
                     vérifier si readline est en mode emacs ou en
                     mode  vi.  Ceci peut être utilisé conjointe­
                     ment à la commande set keymap,  par  exemple
                     pour  ne  configurer  les  jeux  de  touches
                     emacs-standard et emacs-ctlx que si readline
                     démarre en mode emacs.

              term   La  forme  term=  peut  être  utilisée  pour
                     ajouter   des   affectations   de    touches
                     spécifiques au terminal, par exemple sur des
                     touches de fonction.  Le  mot  à  droite  du
                     signe = est comparé au nom complet du termi­
                     nal, et à la portion de ce nom  qui  précède
                     un  éventuel signe -. Ceci permet, par exem­
                     ple, de faire correspondre le mot sun  aussi
                     bien au terminal sun qu'au terminal sun-cmd.

              application
                     La forme application  permet  d'inclure  des



GNU                      20 Janvier 1999                       41





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


                     configurations  spécifiques à l'application.
                     Chaque programme utilisant  la  bibliothèque
                     readline  configure un nom d'application, et
                     un fichier d'initialisation peut dépendre de
                     ce  nom.   Ceci  est utile pour des affecta­
                     tions de touches intéressantes pour un  pro­
                     gramme  spécifique. Par exemple, les comman­
                     des  suivantes  ajoutent  une  séquence   de
                     touches   capable   de   protèger   par  des
                     guillemets  le  mot  courant   ou   le   mot
                     précédent, sous Bash :
                     $if Bash
                     # Protéger le mot actuel ou le précédent
                     "\C-xq": "\eb\"\ef\""
                     $endif

       $endif Cette  commande,  comme  vous  l'avez  deviné  dans
              l'exemple ci-dessus, termine une commande $if.

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

       Les  commandes  de  readline  peuvent recevoir un argument
       numérique, généralement un nombre de répétitions.  Parfois
       il  arrive que le signe de cet argument soit significatif.
       En passant un argument négatif à  une  commande  qui  agit
       vers l'avant (par exemple kill-line), on inversera le sens
       d'action de cette commande. On  détaillera  les  commandes
       dont les arguments ont un comportement particulier.

       Quand   une   commande   est   décrite  comme  destructive
       (killing),  le  texte  effacé  est  sauvegardé  pour   une
       éventuelle  récupération  ulterieure  (yanking).  Le texte
       est sauvegardé dans  des  tampons  circulaires(kill-ring).
       Les destructions successives accumulent les textes dans le
       même tampon qui peut etre récupéré en une seule fois.  Les
       commandes  qui  ne  détruisent  pas de texte permettent de
       séparer les différents tampons.

       Voici une liste des  noms  de  commandes,  ainsi  que  les
       séquences  de touches auxquelles elles sont attribuées par
       défaut.

   Commandes de déplacement
       beginning-of-line (C-a)
              Saut au début de la ligne en cours.
       end-of-line (C-e)
              Saut à la fin de la ligne.
       forward-char (C-f)
              Avancer d'un caractère.
       backward-char (C-b)
              Reculer d'un caractère.
       forward-word (M-f)
              Avancer jusqu'à la fin du  mot  suivant.  Les  mots



GNU                      20 Janvier 1999                       42





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


              sont  composés  de caractères alphanumééiques (let­
              tres et chiffres).
       backward-word (M-b)
              Reculer  jusqu'au  début  du  mot  courant,  ou  du
              précédent.  Les  mots  sont  composés de caractères
              alphanumériques (lettres et chiffres).
       clear-screen (C-l)
              Effacer l'écran, en laissant la ligne  courante  en
              haut  de  l'ecran. S'il y a un argument, rafraîchir
              la ligne en cours sans effacer l'écran.
       redraw-current-line
              Rafraîchir  la  ligne  en  cours.  Par  défaut  pas
              d'affectation de touche.

   Commandes de manipulation de l'historique
       accept-line (Retour-Chariot)
              Valider  la ligne, sans se soucier de l'emplacement
              du curseur. Si cette ligne est non vide,  l'ajouter
              à  la  liste d'historique, en fonction de l'état de
              la variable HISTCONTROL.  Si cette  ligne  est  une
              modification d'une ligne de l'historique, restaurer
              cette dernière.
       previous-history (C-p)
              Récupérer la commande précédente de la liste d'his­
              torique.
       next-history (C-n)
              Récupérer la commande suivante dans la liste d'his­
              torique.
       beginning-of-history (M-<)
              Récupérer la première ligne de l'historique.
       end-of-history (M->)
              Retourner à la fin de l'historique, c'est à dire  à
              la ligne en cours d'édition.
       reverse-search-history (C-r)
              Rechercher  en arrière dans l'historique, en remon­
              tant. C'est une recherche incrémentale.
       forward-search-history (C-s)
              Rechercher en avant dans l'historique,  en  descen­
              dant. C'est une recherche incrémentale.
       non-incremental-reverse-search-history (M-p)
              Rechercher une chaîne en arrière dans l'historique,
              en remontant depuis la ligne actuelle, utiliser une
              recherche non-incrémentale.
       non-incremental-forward-search-history (M-n)
              Rechercher  une  chaîne en avant dans l'historique,
              utiliser une recherche non-incrémentale.
       history-search-forward
              Rechercher en avant  dans  l'historique  la  chaîne
              comprise entre le début de la ligne actuelle, et la
              position du  curseur.  Par  défaut  cette  commande
              n'est affectée à aucune touche.
       history-search-backward
              Rechercher  en  arrière dans l'historique la chaîne
              comprise entre le début de la ligne actuelle, et la



GNU                      20 Janvier 1999                       43





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


              position  du  curseur.  Par  défaut  cette commande
              n'est affectée à aucune touche.
       yank-nth-arg (M-C-y)
              Insérer, à l'emplacement  du  curseur,  le  premier
              argument de la commande précédente. Généralement il
              s'agit du second mot de la ligne  précédente.  Avec
              un  argument n, insérer le nième mot de la commande
              précédente (les mots sont numérotés à partir de 0).
              Un  argument négatif insère le nième mot en partant
              de la fin de la commande précédente.
       yank-last-arg (M-., M-_)
              Insérer à la position du curseur le  dernier  argu­
              ment  de  la commande précédente (le dernier mot de
              la ligne précédente). Avec un argument, se comporte
              exactement comme yank-nth-arg.
       shell-expand-line (M-C-e)
              Développer,  comme  le  fait  le shell, la ligne en
              cours. Ceci inclut le remplacement des alias et des
              directives  d'historique, aussi bien que l'ensemble
              des expansions effectuées par le  shell.   Voir  le
              paragraphe EXPANSION DE L'HISTORIQUE plus bas, pour
              une description détaillée.
       history-expand-line (M-^)
              Effectuer l'expansion d'historique sur la ligne  en
              cours.   Voir  le  paragraphe  EXPANSION  DE L'HIS­
              TORIQUE plus bas, pour une description détaillée.
       insert-last-argument (M-., M-_)
              un synonyme de yank-last-arg.
       operate-and-get-next (C-o)
              Valider la ligne en cours, et  recupérer  la  ligne
              suivante de l'historique pour l'édition. Tout argu­
              ment est ignoré.

   Commande d'édition de texte
       delete-char (C-d)
              Effacer le caractère sous le curseur. Si le curseur
              est  au début de la ligne, si celle-ci est vide, et
              si le dernier caractère  frappé  n'était  pas  C-d,
              alors la valeur renvoyée est EOF.
       backward-delete-char (Rubout)
              Effacer  le  caractère derrière le curseur. Lorsque
              un argument est fourni, le texte effacé est sauveg­
              ardé dans un buffer.
       quoted-insert (C-q, C-v)
              Ajouter  littéralement  sur  la  ligne le caractère
              frappé suivant.  Ceci  permet  d'insérer  des  car­
              actères comme C-q, par exemple.
       tab-insert (C-v TAB)
              Insérer un caractère de tabulation.
       self-insert (a, b, A, 1, !, ...)
              Insérer le caractère mentionné.
       transpose-chars (C-t)
              Echanger  les caractères se trouvant devant et sous
              le  curseur.  Le  curseur  est  alors  avancé  d'un



GNU                      20 Janvier 1999                       44





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


              caractère. S'il se trouve à la fin d'une ligne, les
              caractères échangés sont les deux  précédents.  Les
              arguments négatifs ne sont pas acceptés.
       transpose-words (M-t)
              Echanger  le  mot où se trouve le curseur et le mot
              précédent, puis avancer le curseur après ce mot.
       upcase-word (M-u)
              Transformer le mot en  cours  (ou  le  suivant)  en
              majuscules.  Avec  un argument négatif, agir sur le
              mot précédent mais ne pas déplacer le curseur.
       downcase-word (M-l)
              Transformer le mot en  cours  (ou  le  suivant)  en
              minuscules.  Avec  un argument négatif, agir sur le
              mot précédent mais ne pas déplacer le curseur.
       capitalize-word (M-c)
              Passer en majuscule l'initiale du mot en cours  (ou
              du  suivant). Avec un argument négatif, agir sur le
              mot précédent mais ne pas déplacer le curseur.

   Effacement et récuperation
       kill-line (C-k)
              Effacer le texte depuis  l'emplacement  du  curseur
              jusqu'à la fin de la ligne.
       backward-kill-line (C-x C-Rubout)
              Effacer en arrière jusqu'au début de ligne.
       unix-line-discard (C-u)
              Effacer  le  texte  entre  le  début de la ligne et
              l'emplacement du curseur.
       kill-whole-line
              Effacer toute la ligne  sans  tenir  compte  de  la
              position  du  curseur.  Par  défaut  cette fonction
              n'est affectée à aucune touche.
       kill-word (M-d)
              Effacer le texte entre l'emplacement du curseur  et
              la  fin  du  mot en cours, ou jusqu'à la fin du mot
              suivant si le curseur est  entre  deux  mots.   Les
              séparations  de  mots  sont les mêmes que celles de
              forward-word.
       backward-kill-word (M-Rubout)
              Effacer le mot sous le curseur Les  séparations  de
              mots sont les mêmes que celles de backward-word.
       unix-word-rubout (C-w)
              Effacer  le  mot  derrière le curseur, en utilisant
              l'espace blanc comme limite de  mot.  Cette  limite
              est différente de celle de backward-kill-word.
       delete-horizontal-space
              Effacer  tous les espaces blancs et les tabulations
              autour du curseur. Par défaut cette commande  n'est
              affectée à aucune touche.
       yank (C-y)
              Récupérer  le texte au sommet du tampon circulaire.
       yank-pop (M-y)
              Exécuter une  rotation  du  tampon  circulaire,  et
              récupérer le nouveau texte situé à son sommet. Ceci



GNU                      20 Janvier 1999                       45





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


              ne fonctionne qu'après yank ou yank-pop.

   Arguments numériques
       digit-argument (M-0, M-1, ..., M--)
              Ajouter le chiffre aux arguments déjà présents,  ou
              créer  un  nouvel  argument.  M--  crée un argument
              négatif.
       universal-argument
              Chaque fois que cette  commande  est  exécutée,  le
              compteur  d'arguments est multiplié par 4. Ce comp­
              teur est initialement à 1, aussi  en  exécutant  la
              fonction  une fois il passera à 4. Par défaut cette
              commande n'est affectée à aucune touche.

   Complétion
       complete (TAB)
              Essayer d'effectuer une complétion du  texte  situé
              avant  le  curseur.  Bash effectue la complétion en
              considèrant successivement le texte comme une vari­
              able   (s'il  commence par $), un nom d'utilisateur
              (s'il commence par ~), un nom d'hôte (s'il commence
              par @), ou une commande (y compris les alias et les
              fonctions).  Si rien ne fonctionne,  il  essaye  la
              complétion en nom de fichier.
       possible-completions (M-?)
              Affiche  la liste des complétions possibles pour le
              texte situé avant le curseur.
       insert-completions
              Insérer l'ensemble des complétions du  texte  situé
              avant  le  curseur. Par défaut cette commande n'est
              affectée à aucune touche.
       complete-filename (M-/)
              Essayer la complétion des noms de fichiers  sur  le
              texte situé avant le curseur.
       possible-filename-completions (C-x /)
              Affiche  la liste des complétions possibles en noms
              de fichiers pour le texte situé avant le curseur.
       complete-username (M-~)
              Essayer la complétion des noms  d'utilisateurs  sur
              le texte situé avant le curseur.
       possible-username-completions (C-x ~)
              Affiche  la liste des complétions possibles en noms
              d'utilisateurs  pour  le  texte  situé   avant   le
              curseur.
       complete-variable (M-$)
              Essayer  la  complétion des noms de variables shell
              sur le texte situé avant le curseur.
       possible-variable-completions (C-x $)
              Affiche la liste des complétions possibles en  noms
              de  variables  shell  pour  le texte situé avant le
              curseur.
       complete-hostname (M-@)
              Essayer la complétion des noms d'hôtes sur le texte
              situé avant le curseur.



GNU                      20 Janvier 1999                       46





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


       possible-hostname-completions (C-x @)
              Affiche  la liste des complétions possibles en noms
              d'hôtes pour le texte situé avant le curseur.
       complete-command (M-!)
              Essayer la complétion des commandes  sur  le  texte
              situé avant le curseur. La complétion des commandes
              inclut les alias, les mots réservés, les  fonctions
              shell,  les  fonctions  internes, et finalement les
              exécutables, dans cet ordre.
       possible-command-completions (C-x !)
              Affiche la liste des complétions possibles en  noms
              de  commandes pour le texte situé avant le curseur.
       dynamic-complete-history (M-TAB)
              Essayer la  complétion  du  texte  situé  avant  le
              curseur, en recherchant dans la liste d'historique.
       complete-into-braces (M-{)
              Affiche la liste des complétions possibles en  noms
              de  fichiers  pour le texte situé avant le curseur,
              en renvoyant la liste entre accolades, afin qu'elle
              soit  utilisable  par  le shell (voir le paragraphe
              Expansion des Accolades plus haut).

   Macros Claviers
       start-kbd-macro (C-x ()
              Démarre la mémorisation dans la macro en cours  des
              caractères tapés.
       end-kbd-macro (C-x ))
              Arrête  la  mémorisation dans la macro en cours des
              caractères tapés, et sauvegarde la définition.
       call-last-kbd-macro (C-x e)
              Ré-exécute la derniere macro définie,  en  agissant
              comme  si  les caractères contenus dans cette macro
              étaient tapés au clavier.

   Divers
       re-read-init-file (C-x C-r)
              Lire le contenu du fichier d'initialisation person­
              nalisée,  en  incorporant les assignations de vari­
              ables, ou les affectations de touches qui s'y trou­
              vent.
       abort (C-g)
              Abandonner l'édition en cours et déclencher l'aver­
              tisseur sonore (soumis à  la  configuration  de  la
              variable bell-style).
       do-uppercase-version (M-a, M-b, ...)
              Exécuter  la  commande correspondant aux caractères
              majuscules indiqués.
       prefix-meta (ESC)
              Considérer le prochain  caractère  tapé  comme  une
              séquence Meta.  ESC f est équivalent à Meta-f.
       undo (C-_, C-x C-u)
              Fonction  d'annulation  incrémentale,  chaque ligne
              étant mémorisée séparement.




GNU                      20 Janvier 1999                       47





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


       revert-line (M-r)
              Annuler toutes les modifications sur  cette  ligne.
              Ceci est équivalent à répéter commande undo en nom­
              bre suffisant pour ramener la ligne à son état ini­
              tial.
       tilde-expand (M-~)
              Effectuer  le  développement du tilde sur le mot en
              cours.
       dump-functions
              Afficher toutes les fonctions et leurs assignations
              de touches sur le flux de sortie de readline. Si un
              argument numérique est présent, la sortie est  mise
              en  forme  pour être compatible avec le format d'un
              fichier inputrc.
       display-shell-version (C-x C-v)
              Afficher des informations sur la version de bash en
              cours d'exécution.

HISTORIQUE
       En  mode  interactif, l'interpréteur donne accès à un his­
       torique des commandes, c'est à dire la liste des commandes
       précédemment  utilisées.  Le  texte des HISTSIZE dernières
       commandes (par défaut 500) est mémorisé dans l'historique.
       Le  shell les enregistre avant expansion des paramètres et
       variables (voir le paragraphe EXPANSION  plus  haut)  mais
       après avoir effectué l'expansion historique, sous contrôle
       des variables command_oriented_history et HISTCONTROL.  Au
       démarrage,  l'historique  est  initialisé  avec le fichier
       dont le nom est contenu dans  la  variable  HISTFILE  (par
       défaut  ~/.bash_history).   HISTFILE est tronqué si néces­
       saire, pour ne pas dépasser HISTFILESIZE lignes.  La  com­
       mande interne fc (voir le paragraphe COMMANDES INTERNES DU
       SHELL  plus  bas)  permet  d'afficher,  d'éditer,  ou   de
       ré-exécuter  une  partie  de  l'historique.   La  commande
       interne  history  permet  d'afficher  l'historique  et  de
       manipuler  le  fichier d'historique.  Quelque soit le mode
       d'édition en ligne de commande, des commandes de recherche
       sont  disponibles  pour accéder à l'historique.  Lorsqu'un
       shell interactif se termine, les HISTSIZE dernières lignes
       de l'historique sont copiées dans le fichier HISTFILE.  Si
       la variable HISTFILE n'existe pas, ou si le fichier  n'est
       pas  accessible en écriture, l'historique n'est pas enreg­
       istré.

EXPANSION DE L'HISTORIQUE
       Le shell propose des possibilités  d'expansion  de  l'his­
       torique  qui  sont  semblables  à celles de csh.  Ce para­
       graphe décrit la syntaxe  de  ces  commandes.  Elles  sont
       utilisables par défaut dans les shells interactifs, il est
       toutefois possible de les désactiver en utilisant l'option
       +H  de la commande interne set (voir le paragraphe COMMAN­
       DES INTERNES DU SHELL plus bas). Les shells  non-interact­
       ifs n'effectuent pas d'expansion d'historique.




GNU                      20 Janvier 1999                       48





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


       Le  développement  de  l'historique est fait immédiatement
       après la lecture d'une ligne complète, avant que le  shell
       ne  fasse  la  séparation des mots.  Il se déroule en deux
       parties. La première consiste à  déterminer  la  ligne  de
       l'historique à utiliser pour les substitutions, la seconde
       permet de sélectionner les parties de la lignes à  inclure
       dans la nouvelle ligne.  La ligne sélectionnée dans l'his­
       torique est l'évènement, et les parties de cette  ligne  à
       réutiliser  sont  des mots.  La ligne est découpée en mots
       de la même manière que lors d'une saisie, ainsi  plusieurs
       mots  séparés par des méta-caractères, et protégés par des
       guillemets sont considérés comme un unique mot.   Seul  le
       backslash (\) et les apostrophes permettent de protéger le
       caractère d'échappement de l'historique, par défaut !.

       Le shell offre le contrôle des divers caractères  utilisés
       par  le  mécanisme  d'expansion  de  l'historique (voir la
       description de histchars  plus  haut  dans  le  paragraphe
       Variables du Shell).

   Indicateur d'évènement
       Un indicateur d'évènement est une référence à une ligne de
       commande dans la liste d'historique.

       !      Débute une substitution de l'historique, sauf  s'il
              est suivi par un blanc, retour-chariot, = ou (.
       !!     Est  une  référence à la commande précédente. C'est
              un synonyme de `!-1'.
       !n     Se réfère à la ligne de commande n.
       !-n    Se réfère à la ligne de commande actuelle moins  n.
       !chaîne
              Référence  la  plus récente commande commençant par
              la chaîne.
       !?chaîne[?]
              Se réfère à la plus récente commande  contenant  la
              chaîne.
       ^chaîne_1^chaîne_2^
              Substitution  rapide.  Répéter la dernière commande
              en remplaçant la chaîne_1 par la chaîne_2.  Equiva­
              lent  à ``!!:s/chaîne_1/chaîne_2/'' (voir Modifica­
              teurs plus bas).
       !#     La ligne entière tapée jusqu'à présent.

   Indicateurs de mots
       Un : sépare l'indicateur d'évènements de  l'indicateur  de
       mot. On peut l'omettre si l'indicateur de mot commence par
       ^, $, *, ou %.  Les mots sont numérotés depuis le début de
       la ligne, le premier étant note 0 (zéro).

       0 (zéro)
              Le zéro-ième mot. Pour le shell, c'est le nom de la
              commande.
       n      Le n-ième mot.
       ^      Le premier argument, c'est à dire le mot 1.



GNU                      20 Janvier 1999                       49





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


       $      Le dernier argument.
       %      Le mot ayant été mis en correspondance lors  de  la
              dernière recherche `?chaîne?'.
       x-y    Un intervalle de mots, `-y' permet d'abréger `0-y'.
       *      Tous les mots sauf le zéro-ième. C'est un  synonyme
              pour  `1-$'.   Même  s'il  n'y  a  qu'un  mot, * ne
              déclenche pas d'erreur, simplement la  chaîne  vide
              est renvoyée.
       x*     Abréviation de x-$.
       x-     Abréviation  de  x-$ comme x*, mais sans le dernier
              mot.

   Modificateurs
       Après l'éventuel indicateur de mot,  vous  pouvez  ajouter
       une  séquence de modificateurs, chacun précédé par un `:'.

       h      Elimine la fin du chemin d'accès, ne  laissant  que
              son début.
       r      Supprime  un  suffixe final de la forme .xxx, en ne
              laissant que le nom de base.
       e      Tout supprimer sauf le suffixe final.
       t      Supprimer tout les composants initiaux d'un  chemin
              d'accès, en ne laissant que la fin.
       p      Afficher la nouvelle commande sans l'exécuter.
       q      Protéger  les mots substitués, pour éviter les sub­
              stitutions futures.
       x      Protéger les mots substitués, comme avec q, mais en
              faisant  la  séparation  des mots sur les blancs et
              les retour-chariots.
       s/ancien/nouveau/
              Remplacer par  nouveau  la  première  occurence  de
              ancien  sur  la  ligne d'évènement.  N'importe quel
              délimiteur peut être utilisé à la place de  /.   Le
              dernier  délimiteur  est  facultatif  si  c'est  le
              dernier  caractère  de  la  ligne  d'évènement.  Le
              délimiteur peut être protégé dans ancien et nouveau
              par un simple backslash. Si &  apparaît  dans  nou­
              veau,  il est remplacé par ancien.  Un simple back­
              slash protégera le &.
       &      Répéter la substitution précédente.
       g      Appliquer les changements sur la ligne  d'évènement
              entière.  On utilise ceci conjointement à `:s' (par
              exemple `:gs/ancien/nouveau/') ou `:&'.   S'il  est
              utilisé  avec  `:s', n'importe quel délimiteur peut
              être utilisé à la place de /, et le dernier délimi­
              teur  est  facultatif si c'est le dernier caractère
              de la ligne d'évènement.

CALCUL ARITHMÉTIQUE
       Le shell permet, dans certaines  circonstances,  l'évalua­
       tion  d'expression  arithmétique (voir la commande interne
       let ainsi  que  le  paragraphe  Évaluation  Arithmétique).
       L'évaluation est effectuée en utilisant des entiers longs,
       sans vérification du débordement.  Néanmoins  la  division



GNU                      20 Janvier 1999                       50





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


       par  0  est  détectée et renvoie une erreur.  La liste des
       opérateurs ci-dessous est constituée par  des  groupes  de
       précédence  identique.   Les niveaux sont classés en ordre
       de précédence décroissante.

       - +    plus et moins unaire
       ! ~    négations logique et binaire
       * / %  multiplication, division, reste
       + -    addition, soustraction
       << >>  décalage arithmétique à gauche et à droite
       <= >= < >
              comparaisons
       == !=  égalite et différence
       &      ET binaire
       ^      OU exclusif binaire
       |      OU binaire
       &&     ET logique
       ||     OU logique
       = *= /= %= += -= <<= >>= &= ^= |=
              assignations

       On peut utiliser les variables du shell  comme  opérandes,
       le  développement  des  paramètres  étant  effectué  avant
       l'évaluation arithmétique.   Les  valeurs  des  paramètres
       sont converties en entiers longs dans les expressions. Une
       variable shell n'a  donc  pas  besoin  d'avoir  l'attribut
       "entier" pour être utilisable dans un calcul.

       Les constantes commençant par un 0 sont interprétées comme
       des nombres octaux. Un entête 0x ou 0X indique une  valeur
       héxadécimale.   Sinon,  les nombres ont la forme [base#]n,
       ou la base arithmétique est un nombre décimal entre  2  et
       36, et n le nombre lui-même exprimé dans cette base. Si la
       base n'est pas mentionnée, le nombre est  considéré  comme
       décimal.

       Les  opérateurs  sont  évalués dans l'ordre de précédence.
       Les sous-expressions entre parenthèses  sont  évaluées  en
       premier,   ce  qui  permet  de  surpasser  les  règles  de
       précédence.

COMMANDES INTERNES DU SHELL
       : [arguments]
              Pas d'effet. Cette commande ne  fait  rien  d'autre
              que  l'expansion  des arguments et la mise en place
              des redirections. Le code de retour est nul.

        .  fichier [arguments]
       source fichier [arguments]
              Lire et exécuter les commandes  contenues  dans  le
              fichier  avec  l'environnement  du  shell en cours,
              puis renvoyer le code de retour de la dernière com­
              mande  exécutée  dans  le  fichier.   Si  le nom du
              fichier ne contient pas de slash,  on  utilise  les



GNU                      20 Janvier 1999                       51





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


              chemins d'accès contenus dans la variable PATH pour
              rechercher  le  répertoire  contenant  le  fichier.
              Lorsqu'il est recherché dans le PATH le fichier n'a
              pas besoin d'être exécutable. Le répertoire de tra­
              vail  en  cours  est  finalement  examiné  si aucun
              fichier n'est trouvé dans le PATH.   Si  des  argu­
              ments  sont  fournis,  ils  sont  transmis dans les
              paramètres  positionnels  lorsque  le  fichier  est
              exécuté.   Sinon les paramètres positionnel ne sont
              pas modifiés.  Le code de retour est  celui  de  la
              dernière  commande exécutée au sein du script (0 si
              aucune commande n'est  exécutée),  et  faux  si  le
              fichier n'est pas trouvé.

       alias [nom[=valeur] ...]
              La  commande  alias,  sans argument, affiche sur la
              sortie standard la  liste  des  alias  actuellement
              définis,  sous  la  forme  nom=valeur. Lorsque l'on
              fournit des  arguments,  un  alias  est  créé  pour
              chaque nom auquel on a donné une valeur.  Un espace
              final dans une valeur forcera la recherche  d'alias
              dans le mot suivant lors de l'expansion de l'alias.
              Pour chacun des noms pour  lesquels  aucune  valeur
              n'est  fournie dans la liste d'arguments, le nom et
              la valeur de l'alias sont  affichés.   La  commande
              Alias  renvoie  vrai,  sauf  si l'on indique un nom
              pour lequel aucun alias n'a été défini.

       bg [job]
              Bascule le job en arrière-plan,  comme  s'il  avait
              été  lancé  avec &.  Si aucun job n'est précisé, le
              job en cours est basculé en arrière-plan.   bg  job
              renvoie 0 si le contrôle des jobs est désactivé, ou
              si le job n'existe pas, ou encore s'il a été  lancé
              sans contrôle de jobs.

       bind [-m jeu_de_touches] [-lvd] [-q nom]
       bind [-m jeu_de_touches] -f fichier
       bind [-m jeu_de_touches] sequence:fonction
              Affiche  les  affectations de touches readline pour
              une fonction, ou affecte une séquence de touches  à
              une  fonction  ou  une  macro readline.  La syntaxe
              d'affectation est identique à  celle  des  fichiers
              .inputrc, mais chaque affectation doit être fournie
              sous  forme  d'argument  indépendant,  par  exemple
              '"\C-x\C-r":  re-read-init-file'.  Les  éventuelles
              options ont les significations suivantes :
              -m jeu_de_touches
                     Modifier la configuration du  jeu_de_touches
                     indiqué.    Les   noms  des  jeux_de_touches
                     acceptés sont emacs, emacs-standard,  emacs-
                     meta,  emacs-ctlx,  vi, vi-move, vi-command,
                     et vi-insert.  vi est équivalent  à  vi-com­
                     mand; emacs est équivalent à emacs-standard.



GNU                      20 Janvier 1999                       52





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


              -l     Afficher la liste des  noms  de  toutes  les
                     fonctions readline
              -v     Afficher les affectations actuelles
              -d     Afficher  les  fonctions et les affectations
                     de manière à pouvoir les réutiliser
              -f fichier
                     Lire les affectations dans le fichier
              -q fonction
                     Rechercher la touche  permettant  d'invoquer
                     la fonction indiquée

              La  valeur  de retour est nulle, sauf si une option
              invalide est fournie, ou si une erreur se  produit.

       break [n]
              Sortir d'une boucle for, while, ou until.  Si n est
              fourni, sortir de n niveaux  de  boucles.   n  doit
              être >= 1.  Si n est supérieur au nombre de boucles
              imbriquées, on sort de l'ensemble d'entre elles. La
              valeur  de  retour  est  nulle,  sauf  si  le shell
              n'exécute  pas  de  boucle  lorsque  le  break  est
              atteint.

       builtin commande_interne [arguments]
              Exécuter  la commande interne du shell indiquée, en
              lui passant les arguments, puis renvoyer  son  code
              de  retour.   Ceci  est  utile  lorsque  l'on  veut
              définir une fonction ayant le même nom qu'une  com­
              mande  interne,  mais  que l'on a besoin d'invoquer
              cette commande depuis l'intérieur de  la  fonction.
              On  redéfinit souvent la commande interne cd ainsi.
              Le code de retour est faux si  la  commande_interne
              n'existe pas.

       cd [rep]
              Remplacer  le  répertoire  de  travail en cours par
              rep. La variable HOME est la valeur par  défaut  de
              rep.   La  variable  CDPATH  définit des chemins de
              recherche pour trouver le répertoire contenant rep.
              Les  répertoires  possibles y sont fournis dans une
              liste séparées par des doubles-points (:).  Un  nom
              de  répertoire  nul  dans  CDPATH est équivalent au
              répertoire en cours, c'est à  dire  ``.''.  Si  rep
              coommence  par un slash (/), alors CDPATH n'est pas
              utilisé. Un argument - est  équivalent  à  $OLDPWD.
              La  valeur de retour est vraie si l'on a pu changer
              le répertoire de travail, et fausse sinon.

       command [-pVv] commande [arguments ...]
              Lancer la commande  avec  les  arguments  indiqués,
              mais   en  simplifiant  le  processus  habituel  de
              recherche  des  commandes.  Seules  les   commandes
              internes,  et les commandes disque trouvées dans le
              PATH seront exécutées. Si l'option -p est  fournie,



GNU                      20 Janvier 1999                       53





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


              la  recherche  utilisera  une  valeur par défaut du
              PATH garantissant de trouver tous  les  utilitaires
              standards.   Si  l'option  -V  ou  l'option -v sont
              fournies,  une  description  de  la  commande   est
              affichée.  L'option  -v  n'affiche qu'un simple mot
              indiquant la commande interne, ou le chemin d'accès
              utilisé  pour  invoquer  la  commande.  L'option -V
              fournit une description plus volubile.  Un argument
              --  arrête la recherche d'options dans la suite des
              arguments.  Si les options -V ou -v sont  fournies,
              le code de retour est 0 si la commande est trouvée,
              et 1 sinon. Si aucune option n'est fournie,  et  si
              une  erreur  se  produit,  ou  si  la  commande est
              introuvable, le code de retour est 127.  Sinon,  le
              code  de retour de cette commande interne est celui
              de la commande invoquée.

       continue [n]
              Reprendre l'exécution à l'itération suivante  d'une
              boucle  for,  while,  ou  until.  Si n est indiqué,
              reprendre l'exécution à la n-ième boucle imbriquée.
              n  doit être >= 1.  Si n est supérieur au nombre de
              boucles imbriquées, l'exécution reprend à la boucle
              la  plus externe (`top-level'). La valeur de retour
              est 0 sauf si le shell n'exécutait  pas  de  boucle
              quand il a rencontré l'instruction continue.

       declare [-frxi] [nom[=valeur]]
       typeset [-frxi] [nom[=valeur]]
              Déclarer  des  variables  et/ou  leur  fournir  des
              attributs.  Si  aucun  nom  n'est  mentionné,   les
              valeurs  des  variables sont affichées. Les options
              permettent de restreindre l'affichage aux variables
              dotées de certains attributs.
              -f     Seulement les noms de fonctions
              -r     Rend  les noms accessibles en lecture seule­
                     ment. On ne pourra plus modifier les valeurs
                     de ces noms lors d'assignations ultérieures.
              -x     Marquer le noms pour qu'il soit exporté dans
                     l'environnement des commandes suivantes.
              -i     La  variable  est  traitée  comme un entier.
                     L'évaluation arithmétique (voir plus haut le
                     paragraphe  EVALUATION  ARITHMÉTIQUE  )  est
                     effectuée lorsque  la  variable  reçoit  une
                     valeur.

              En utilisant `+' a la place de `-', l'attribut cor­
              respondant est désactivé. Dans une fonction, le nom
              devient  local,  comme  avec la commande local.  La
              valeur de retour est 0 sauf si une option  illégale
              est  rencontrée,  si on essaye de définir une fonc­
              tion en utilisant "-f foo=bar", si  l'un  des  noms
              n'est  pas un nom légal pour le shell, si on essaye
              de   supprimer   l'attribut   lecture-seule   d'une



GNU                      20 Janvier 1999                       54





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


              variable,  ou  si  on essaye d'afficher avec -f une
              fonction inexistante.

       dirs [-l] [+/-n]
              Affiche  la  liste  des  répertoires   actuellement
              mémorisés.  On  ajoute  des  répertoires dans cette
              liste avec la commande pushd, on revient en arrière
              avec la commande popd.
              +n     affiche   le  n-ième  élément  de  la  liste
                     fournie par dirs sans options, en comptant à
                     partir de la gauche en commençant à zero.
              -n     affiche   le  n-ième  élément  de  la  liste
                     fournie par dirs sans options, en comptant à
                     partir de la droite en commençant à zero.
              -l     affiche  une  liste  longue,  le  format par
                     défaut utilisant le tilde  pour  représenter
                     le répertoire personnel.

              La  valeur  de  retour  est  0  sauf  si une option
              illégale a été trouvée, ou si l'index n dépasse  la
              longueur de la pile des répertoires.

       echo [-neE] [arguments ...]
              Affiche  ses  argumentss,  séparés par des espaces.
              La valeur  de  retour  est  toujours  nulle.   Avec
              l'option  -n, le retour-chariot final est supprimé.
              Avec l'option  -e  l'interprétation  des  séquences
              d'échappement  est  activée.  L'option -E désactive
              l'interprétation des séquences d'échappement,  même
              sur  les  systèmes  où  elles sont interprétées par
              défaut.
              \a     alerte (avertisseur sonore)
              \b     backspace
              \c     suppression du retour-chariot final
              \f     saut de page
              \n     nouvelle ligne
              \r     retour-chariot
              \t     tabulation horizontale
              \v     tabulation verticale
              \\     backslash
              \nnn   le caractère dont le code ASCII vaut nnn (en
                     octal)

       enable [-n] [-all] [nom ...]
              Active  ou  inhibe les commandes internes du shell.
              Ceci permet d'exécuter une commande disque ayant le
              même  nom  qu'une  commande  interne du shell, sans
              avoir besoin d'indiquer le chemin d'accès  complet.
              Avec  l'option  -n,  chaque nom indiqué est inhibé,
              sinon ils sont activés. Par exemple, pour  utiliser
              le  programme  binaire  test  qui se trouve dans le
              PATH  plutôt  que  la  commande  interne,  utilisez
              ``enable   -n  test''.   Si  aucun  argument  n'est
              fourni, la liste des commandes internes actives est



GNU                      20 Janvier 1999                       55





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


              affichée.   Si  seule  l'option  -n est fournie, la
              liste des commandes internes inhibées est affichée.
              Si  seule  l'option  -all  est fournie, la liste de
              toutes les commandes internes  est  affichée,  avec
              pour  chacune l'indication de l'activation ou inhi­
              bition.  enable accepte -a comme synonyme de  -all.
              La  valeur  de  retour est 0, sauf si nom n'est pas
              une commande interne.

       eval [arguments ...]
              Les arguments sont lus et regroupés  en  une  seule
              commande  simple.  Cette  commande est alors lue et
              exécutée par le shell, et son code  de  retour  est
              renvoyée  comme  valeur  de la commande eval.  S'il
              n'y a pas d'arguments, ou uniquement des  arguments
              nuls, eval renvoie vrai.

       exec [[-] commande [arguments]]
              Si  une  commande  est  indiquée,  elle remplace le
              shell.  Aucun nouveau  processus  n'est  créé.  Les
              arguments  deviennent  ceux  de la commande.  Si le
              premier argument est  -,  l'interpréteur  place  un
              tiret  en  guise  de zéro-ième argument fourni a la
              commande.  C'est ce que fait login. Si  le  fichier
              ne  peut  pas être exécuté, quelque soit la raison,
              un shell non-interactif  se  termine,  sauf  si  la
              variable  no_exit_on_failed_exec existe, auquel cas
              une erreur est renvoyée. Un shell  interactif  rap­
              porte  l'erreur  si  le  fichier  ne  peut pas etre
              exécuté.  Si aucune commande  n'est  indiquée,  les
              éventuelles  redirections  sont mises en place dans
              le shell en cours, et le code de retour est 0.

       exit [n]
              Termine le shell avec le code de retour n. Si n est
              omis,  le  code de retour sera celui de la dernière
              commande  exécutée.    Un   éventuel   gestionnaire
              installé  sur  EXIT  (voir la commande interne trap
              plus bas) sera exécuté avant la fin du shell.

       export [-nf] [nom[=mot]] ...
       export -p
              Les noms indiqués sont marqués pour  être  exportés
              automatiquement  dans l'environnement des commandes
              exécutées par la suite. Si l'option -f est fournie,
              les  noms  sont  ceux  de  fonctions.  Si aucun nom
              n'est mentionné, ou si l'option -p est fournie, une
              liste  est  affichée  indiquant l'ensemble des noms
              exportables par ce  shell.   L'option  -n  supprime
              l'attribut d'exportation des variables mentionnées.
              Un argument -- arrête la recherche  d'options  dans
              la  suite des arguments.  export renvoie un code de
              retour nul, sauf si une option  illégale  est  ren­
              contrée,  ou  si  l'un des noms n'est pas un nom de



GNU                      20 Janvier 1999                       56





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


              variable légal, ou si l'option -f est fournie  avec
              un nom qui ne soit pas une fonction.

       fc [-e éditeur] [-nlr] [première] [dernière]
       fc -s [motif=nouveau] [commande]
              (Fix  Command). Avec la première forme indiquée ci-
              dessus,  un  intervalle  de  commandes,  entre   la
              première  et  la  dernière, est sélectionné dans la
              liste d'historique.  La  première  et  la  dernière
              peuvent  être  indiquées  sous forme de chaînes (la
              dernière  commande   commençant   par   la   chaîne
              indiquée),  ou  sous forme numérique (un index dans
              la liste d'historique, ou un nombre  négatif  indi­
              quant   un  décalage  par  rapport  à  la  position
              actuelle dans cette liste).  Si la  dernière  n'est
              pas  indiquée, on considère qu'il s'agit de la com­
              mande en cours  si  l'on  veut  afficher  la  liste
              (ainsi  fc  -l  -10 affiche les 10 derniere comman­
              des), et qu'il s'agit de la même  que  la  première
              sinon.   Si la première n'est pas indiquée, on con­
              sidere qu'il s'agit de la commande précédente  pour
              une édition, et de la commande -16 pour l'affichage
              de liste.

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

              Dans la seconde forme, la commande est  ré-exécutée
              apres  avoir  remplacé chaque instance du motif par
              nouveau.  Un alias utile pour ceci est ``r=fc -s'',
              ainsi  en  tapant  ``r  cc'' on relance la dernière
              commande commençant par ``cc'', et en tapant  ``r''
              on ré-exécute la commande précédente.

              Lorsque  la  première forme est utilisée, la valeur
              renvoyée est 0, sauf si  une  option  illégale  est
              trouvée,  ou  si première ou dernière indiquent des
              lignes d'historique  inexistantes.   Avec  l'option
              -e,  la  valeur  de retour est celle de la dernière
              commande exécutée, ou un échec si une erreur  s'est
              produite  avec le fichier temporaire des commandes.
              Avec la seconde forme, le code de retour est  celui
              de la commande ré-exécutée, à moins que commande ne
              soit pas une ligne valide de  l'historique,  auquel
              cas fc renvoie un échec.



GNU                      20 Janvier 1999                       57





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


       fg [job]
              Placer le job en avant-plan,  et en faire le job en
              cours. Si aucun job n'est mentionné, le shell  con­
              sidèrera  qu'il  faut  ramener  le  job en cours en
              avant-plan.  La valeur de retour est  celle  de  la
              commande  placée  en  avant-plan, ou un échec si le
              contrôle des jobs n'est pas actif, ou encore si  le
              job  n'existe  pas ou a été lancé sans contrôle des
              jobs.

       getopts chaîne_d_options nom [arguments]
              getopts est utilise par les procédures  shell  pour
              analyser    les    paramètres   positionnels.    La
              chaîne_d_options contient  l'ensemble  des  lettres
              d'options  à  reconnaître. Si une lettre est suivie
              par un double-point (:), l'option est  censée  com­
              prendre un argument, qui peut en être séparé par un
              espace.   A  chaque   invocation,   getopts   place
              l'option  suivante  dans  la variable shell dont le
              nom est fourni, en la créant si elle n'existe  pas.
              Il  place également l'index de l'argument suivant à
              analyser dans la variable OPTIND.  OPTIND est  ini­
              tialisé  à  1 à chaque lancement d'un shell ou d'un
              script.  Quand une option  nécessite  un  argument,
              getopts place celui-ci dans la variable OPTARG.  Le
              shell ne réinitialise pas  OPTIND  automatiquement,
              il  faut le faire manuellement si des appels multi­
              ples à getopts au sein du même shell utilisent  des
              ensembles différents de paramètres.

              getopts peut renvoyer des erreurs de deux manières.
              Si le premier caractère de la chaîne_d_options  est
              un  double  point,  les  erreurs  sont renvoyées de
              manière silencieuse.  Lors d'un fonctionnement nor­
              mal,  des messages de diagnostique sont affichés si
              une option est illégale, ou s'il manque un argument
              d'option.  Si la variable OPTERR vaut 0, aucun mes­
              sage d'erreur ne sera affiché, même si  le  premier
              caractère  de la chaîne_d_options n'est pas un dou­
              ble-point.

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

              Lorsqu'un argument d'option  est  manquant,  et  si
              getopts n'est pas silencieux, un point d'interroga­
              tion (?) est placé dans la variable nom, OPTARG est
              détruit, et un message de diagnostique est affiché.
              Si getopts est silencieux, un double-point (:)  est



GNU                      20 Janvier 1999                       58





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


              placé  dans  la  variable  nom et OPTARG est rempli
              avec le caractère d'option trouvé.

              getopts est normalement utilisé pour  analyser  les
              paramètres    positionnels,   mais   il   analysera
              d'éventuels  arguments  supplémentaires.    getopts
              renvoie  la  valeur  Vrai  si une option, prévue ou
              imprévue, est trouvée.  Il renvoie Faux si  la  fin
              des  options est atteinte, ou si une erreur se pro­
              duit.

       hash [-r] [nom]
              Pour chaque nom fourni, le chemin  d'accès  complet
              de   la   commande   est  déterminé,  et  mémorisé.
              L'option -r force  le  shell  à  oublier  tous  les
              emplacements   mémorisés.    Sans  arguments,  hash
              affiche  des   informations   sur   les   commandes
              mémorisées.   Un  argument  --  arrête la recherche
              d'options dans la suite des arguments.   La  valeur
              de  retour  est Vrai, sauf si nom n'est pas trouvé,
              ou si une option est illégale.

       help [motif]
              Affiche des informations d'aide au sujet  des  com­
              mandes  internes.  Si  un  motif  est indiqué, help
              fournit de l'aide sur toutes les  commandes  corre­
              spondant à ce motif, sinon, une liste des commandes
              internes est affichée. Le code  de  retour  est  0,
              sauf  si  aucune  commande  ne peut correspondre au
              motif.

       history [n]
       history -rwan [fichier]
              Sans options, affiche la  liste  des  commandes  de
              l'historique, avec des numéros de ligne. Les lignes
              marquées avec un astérisque * ont été modifiées. Un
              argument  n permet de ne lister que les n dernières
              lignes. Si un argument est fourni, il  est  utilisé
              comme  nom  de fichier historique, sinon on utilise
              la valeur de la variable HISTFILE.  Les options ont
              les significations suivantes :
              -a     Ajouter   les  ``nouvelles''  lignes  d'his­
                     toriques (celles créées depuis le  début  de
                     la   session   actuelle  de  bash)  dans  le
                     fichier.
              -n     Lire dans le fichier, et ajouter à la  liste
                     d'historique, les lignes non encore lues. Il
                     s'agit des lignes qui ont été ajoutées  dans
                     le  fichier  depuis  le  début de la session
                     actuelle de bash.
              -r     Lire le contenu du  fichier,  et  l'utiliser
                     comme historique courant.
              -w     Ecrire  dans le fichier l'historique actuel,
                     en écrasant le contenu precedent.



GNU                      20 Janvier 1999                       59





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


              La valeur de retour  est  0,  sauf  si  une  option
              illégale  est  fournie, ou si une erreur se produit
              durant la lecture ou l'écriture du fichier.

       jobs [-lnp] [ job ... ]
       jobs -x commande [ arguments ... ]
              La première forme affiche la liste de jobs  actifs.
              L'option  -l affiche les PIDs, en plus des informa­
              tions normales. L'option -p n'affiche que le PID du
              leader  du groupe de processus du job.  L'option -n
              n'affiche que les  jobs  dont  le  statut  a  varié
              depuis  le dernier affichage.  Si une spécification
              de job est fournie, l'affichage ne comporte que les
              informations  à propos de ce job. Le code de retour
              est 0, à moins qu'une option illégale  soit  trans­
              mise, ou que le job n'existe pas.

              Avec  l'option  -x,  jobs  va  remplacer toutes les
              spécifications de jobs rencontrées dans la commande
              ou  dans  ses  arguments  avec les Process Group ID
              correspondant, puis il exécutera la commande en lui
              transmettant  les  arguments,  et  en renvoyant son
              code de retour.

       kill [-s sigspec | -sigspec] [pid | job] ...
       kill -l [signum]
              Envoyer le signal indiqué par sigspec aux processus
              spécifiés  par pid ou par jobspec.  On peut fournir
              sigspec sous forme numérique, ou sous forme de  nom
              de signal, comme SIGKILL.  Si sigspec est un nom de
              signal, il n'y  a  pas  de  différenciation  majus­
              cules/minuscules, et le préfixe SIG est facultatif.
              S'il n'y a pas d'indication de sigspec,  le  signal
              envoyé  est  SIGTERM.   Un  argument  -l fournit la
              liste des noms de signaux. S'il y a  des  arguments
              avec  l'option  -l,  les  noms des signaux indiqués
              sont affichés, et le code de retour  est  nul.   Un
              argument  --  arrête la recherche d'options dans la
              suite des arguments.  kill renvoie Vrai si au moins
              un signal a été envoyé, ou Faux si une erreur s'est
              produite, ou si une option illégale a été  trouvée.

       let argument [argument ...]
              Chaque  argument  est une expression arithmétique à
              evaluer (voir plus haut  le  paragraphe  EVALUATION
              ARITHMÉTIQUE).  Si l'évaluation du dernier argument
              donne 0, let renvoie 1, sinon elle renvoie 0.

       local [nom[=valeur] ...]
              Pour chaque argument, on crée une  variable  locale
              ayant  le  nom indiqué, et à laquelle on affecte la
              valeur fournie.  Quand local est utilisée dans  une
              fonction,  le  nom de la variable n'est visible que
              dans  la  fonction,  et  ses  descendantes.    Sans



GNU                      20 Janvier 1999                       60





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


              opérandes,  local  affiche  la  liste des variables
              locales sur la sortie  standard.  Il  ne  faut  pas
              utiliser  local  en dehors des fonctions. La valeur
              de retour est 0,  sauf  si  local  est  invoqué  en
              dehors  d'une  fonction,  ou  si un nom illégal est
              fourni.

       logout Quitter un shell de login.

       popd [+/-n]
              Enlève des éléments de  la  pile  des  répertoires.
              Sans  arguments, seul le répertoire du sommet de la
              pile est éliminé, et un cd est effectué  en  direc­
              tion du nouveau répertoire au sommet.
              +n     supprime  le  n-ième  élément  de  la  liste
                     affichée par dirs,  en  comptant  depuis  la
                     gauche  à partir de 0.  Par exemple : ``popd
                     +0'' enlève le  premier  répertoire,  ``popd
                     +1'' le second.
              -n     supprime  le  n-ième  élément  de  la  liste
                     affichée par dirs,  en  comptant  depuis  la
                     droite  à  partir de 0.  Par exemple: ``popd
                     -0'' supprimer  le  dernier  répertoire,  et
                     ``popd -1'' l'avant-dernier.

              Si  la commande popd réussit, un dirs est effectué,
              et le code de retour est nul.  popd renvoie Faux si
              une  option  illégale  est  trouvée,  si la pile de
              répertoires est vide, si on a indiqué un répertoire
              absent  de  la  pile, ou si le changement de réper­
              toire a échoué.

       pushd [rep]
       pushd +/-n
              Ajoute un répertoire  au  sommet  de  la  pile  des
              répertoires, ou effectue une rotation dans la pile,
              en ramenant le répertoire en cours au sommet.  Sans
              argument,  cette  commande  échange les deux réper­
              toires au sommet, et renvoie 0, sauf si la pile est
              vide.
              +n     Effectue  une  rotation  dans  la  pile,  de
                     manière à amener au sommet le n-ième  réper­
                     toire  de  la  liste  affichée  par dirs (en
                     comptant à partir de la gauche).
              -n     Effectue  une  rotation  dans  la  pile,  de
                     manière  à amener au sommet le n-ième réper­
                     toire de la  liste  affichée  par  dirs  (en
                     comptant à partir de la droite).
              rep    Ajoute  le  répertoire  rep  au sommet de la
                     pile, et en fait le  nouveau  répertoire  de
                     travail.

              Si  la  commande  pushd  réussit,  elle effectue un
              dirs.  Si  on  utilise  la  première  forme,  pushd



GNU                      20 Janvier 1999                       61





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


              renvoie  0  sauf si le déplacement vers rep échoue.
              Avec la seconde forme, pushd renvoie 0 sauf  si  la
              pile  est  vide, si on a réclamé un élément inexis­
              tant de la pile, ou si le changement de  répertoire
              a échoué.

       pwd    Affiche  le chemin d'accès complet au répertoire de
              travail actuel.  Si  l'option  -P  de  la  commande
              interne  set  est active, le chemin affiche ne con­
              tiendra pas de liens symboliques.  (Voir  également
              une description de nolinks dans le paragraphe Vari­
              ables du Shell plus haut). Le code  de  retour  est
              nul,  sauf  si  une erreur s'est produite durant la
              lecture du chemin d'accès au répertoire courant.

       read [-r] [nom ...]
              Une ligne est lue depuis l'entrée standard, puis le
              premier  mot  de cette ligne est affecté au premier
              nom, le second mot  au  second  nom,  et  ainsi  de
              suite.  Les  mots restants sont affectés au dernier
              nom.  Seul les caractères contenus  dans  la  vari­
              ables  IFS sont utilisés comme délimiteurs de mots.
              Si  aucun  nom  n'est  fourni,  la  ligne  lue  est
              affectée  entièrement à la variable REPLY.  Le code
              de retour est nul, sauf si une  fin-de-fichier  est
              rencontrée.   Avec  l'option  -r, une paire de car­
              actères backslash/retour-chariot n'est pas ignorée,
              et  le backslash est considéré comme faisant partie
              de la ligne.

       readonly [-f] [nom ...]
       readonly -p
              Les noms indiqués reçoivent  un  attribut  lecture-
              seule,  et  ces  noms ne pourront pas être modifiés
              par des affectations  ultérieures.   Avec  l'option
              -f,  on considère les fonctions correspondant à ces
              noms.   Si  aucun  argument  n'est  fourni,  ou  si
              l'option  -p  est utilisée, on affiche la liste des
              noms en lecture-seule.  Un argument  --  arrête  la
              recherche  d'options  dans  la suite des arguments.
              Le code de retour  est  nul,  sauf  si  une  option
              illégale  a été trouvée, si l'un des noms n'est pas
              un nom légal de variables shell, ou si l'option  -f
              est  fournie  avec un nom qui ne soit pas une fonc­
              tion.

       return [n]
              La fonction shell en cours d'exécution  se  termine
              en renvoyant la valeur n.  Si n est omis, la valeur
              renvoyée est celle de la dernière commande exécutée
              dans  le  corps  de la fonction.  Si cette commande
              est exécutée en dehors d'une fonction, mais  durant
              l'exécution   d'un   script   avec  la  commande  .
              (source) ce script s'arrête, et la valeur  renvoyée



GNU                      20 Janvier 1999                       62





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


              est n ou celle de la derniere commande exécutée. Si
              elle est utilisée en dehors d'une fonction ou  d'un
              script exécuté par ., le code retour est Faux.

       set [--abefhkmnptuvxldCHP] [-o option] [argument ...]
              -a      Marquage  automatique  des  variables  mod­
                      ifiées  ou  créées  pour  qu'elles   soient
                      exportées  dans l'environnement des comman­
                      des exécutées ultérieurement.
              -b      Affichage immédiat des statuts des jobs  en
                      arrière-plan  qui  se terminent, plutot que
                      d'attendre l'affichage du prochain  symbole
                      d'accueil  principal (Voir également notify
                      dans le paragraphe Variables du Shell  plus
                      haut).
              -e      Sortie immédiate lorsqu'une commande simple
                      (voir GRAMMAIRE DU SHELL plus haut) se ter­
                      mine  avec  un code non nul. Le shell ne se
                      termine pas si la commande échoue dans  une
                      boucle  until  ou  while,  dans un test if,
                      dans une liste && ou ||, ou si le  code  de
                      retour est inversé par !.
              -f      Désactivation  du développement des noms de
                      fichiers.
              -h      Localisation et mémorisation des  commandes
                      dans  les fonctions au moment de la défini­
                      tion des fonctions. Ces commandes sont nor­
                      malement    recherchées    au   moment   de
                      l'exécution de la fonction.
              -k      Tous les arguments sont placés dans l'envi­
                      ronnement  des  commandes,  pas  uniquement
                      ceux saisis avant le nom de la commande.
              -m      Mode supervision.  Activation  du  contrôle
                      des jobs. Ce mode est actif par defaut pour
                      les shells interactifs  qui  le  supportent
                      (voir  le paragraphe CONTRÔLE DES JOBS plus
                      haut). Les processus en  arrière-plan  sont
                      exécutés  dans  des  groupes  de  processus
                      séparés,  et  une  ligne   indiquant   leur
                      statuts  est  affichée lorsqu'ils se termi­
                      nent.
              -n      Lecture de commandes sans  exécution.  Ceci
                      peut   être  utilisé  pour  rechercher  les
                      erreurs de syntaxe dans un script. Ce  dra­
                      peau est ignoré par les shells interactifs.
              -o nom__d_option
                      Le nom_d_option est l'un des suivants :
                      allexport
                              Identique à -a.
                      braceexpand
                              Le shell effectue le  développement
                              des  accolades  (voir le paragraphe
                              Développement  des  Accolades  plus
                              haut).   C'est  le comportement par



GNU                      20 Janvier 1999                       63





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


                              défaut.
                      emacs   Utiliser une interface "à la emacs"
                              pour  les lignes de commande. C'est
                              le comportement par défaut pour  un
                              shell  interactif,  sauf  s'il  est
                              lance avec l'option -nolineediting.
                      errexit Identique à -e.
                      histexpand
                              Identique à -H.
                      ignoreeof
                              Identique  à l'exécution d'une com­
                              mande shell `IGNOREEOF=10'.   (voir
                              le  paragraphe  Variables  du Shell
                              plus haut)
                      interactive-comments
                              Autoriser les commentaires dans les
                              shells   interactifs,  en  ignorant
                              tout ce qui se trouve  à  la  suite
                              d'un  mot  commençant par #.  (voir
                              le  paragraphe  COMMENTAIRES   plus
                              haut).
                      monitor Identique à -m.
                      noclobber
                              Identique à -C.
                      noexec  Identique à -n.
                      noglob  Identique à -f.
                      nohash  Identique à -d.
                      notify  Identique à -b.
                      nounset Identique à -u.
                      physical
                              Identique à -P.
                      posix   Modifier  le  comportement de bash,
                              lorsque les opérations  par  défaut
                              s'éloigne   de  Posix  1003.2  afin
                              d'être conforme au standard.
                      privileged
                              Identique à -p.
                      verbose Identique à -v.
                      vi      Utiliser  une  interface  d'édition
                              des lignes de commande "à la vi".
                      xtrace  Identique à -x.
                      Si  aucun  nom_d_option  n'est  fourni, les
                      valeurs actuelles de l'ensemble des options
                      sont affichées.
              -p      Basculer en mode privilégié.  Dans ce mode,
                      le fichier $ENV n'est pas  traité,  et  les
                      fonctions   shells  ne  sont  pas  héritées
                      depuis  l'environnement.   Ce  comportement
                      est  automatiquement  déclenché quand l'UID
                      (ou GID) effectif n'est pas  égal  à  l'UID
                      (respectivement  GID)  réel. En désactivant
                      cette option, les UID et GID effectifs sont
                      automatiquement  replacés  aux  valeurs des
                      UID et GID réels.



GNU                      20 Janvier 1999                       64





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


              -t      Sortie   automatique   apres   lecture   et
                      exécution d'une commande.
              -u      Considérer les variables inexistantes comme
                      des   erreurs   durant   l'expansion    des
                      paramètres.  Si  on tente de développer une
                      variable inexistante, le shell  affiche  un
                      message d'erreur, et, s'il n'est pas inter­
                      actif, se termine avec un  code  de  retour
                      non-nul.
              -v      Affichage des lignes de commandes au fur et
                      à mesure de leur lecture.
              -x      Après l'expansion de chaque  commande  sim­
                      ple,  bash affiche la valeur de PS4, suivie
                      par   la   commande   et   ses    arguments
                      développés.
              -l      Sauver  et  restituer  ensuite la valeur du
                      nom lors d'une commande for  nom  [in  mot]
                      (voir le paragraphe GRAMMAIRE DU SHELL plus
                      haut).
              -d      Désactivation du stockage dans une table de
                      hachage  des commandes exécutées.  Normale­
                      ment, les commandes  sont  mémorisees  dans
                      cette  table, et bash n'a ainsi plus besoin
                      de les chercher à nouveau.
              -C      Identique  à  l'exécution  de  la  commande
                      shell  `noclobber='.   (voir  le paragraphe
                      Variables du Shell plus haut).
              -H      Autoriser le style !  de substitution  his­
                      torique.  C'est  le comportement par défaut
                      lorsque le shell est interactif.
              -P      Ne pas suivre les  liens  symboliques  lors
                      d'une  commande  comme  cd  qui  modifie le
                      répertoire de travail. Utiliser à la  place
                      le répertoire physique.
              --      Si aucun argument ne suit ce drapeau, alors
                      les paramètres positionnels sont  détruits.
                      Sinon,  les  paramètres  positionnels  sont
                      remplis avec les arguments,  même  si  cer­
                      tains d'entre eux commencent par un -.
              -       Fin   des   options.   Tous  les  arguments
                      restants sont affectés aux paramètres posi­
                      tionnels.  Les  attributs  -x  et  -v  sont
                      désactivés.  S'il n'y  a  pas  d'arguments,
                      les  paramètres  positionnels  ne  sont pas
                      modifiés.

              Par défaut  les  attributs  sont  désactivés,  sauf
              indication contraire.  En utilisant + à la place de
              -  on  désactive  explicitement  un  drapeau.   Les
              attributs  peuvent  également être fournis en argu­
              ment lors de l'invocation du shell. Le jeu de  dra­
              peaux  actuellement  actifs est disponible dans $-.
              Apres la  lecture  des  options,  les  n  arguments
              restants sont affectés, dans l'ordre aux paramètres



GNU                      20 Janvier 1999                       65





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


              positionnels $1, $2, ...  $n.  Si aucune option  et
              aucun  argument  n'est fournis, on affiche la liste
              des variables du shell. Le code de retour est  tou­
              jours  Vrai,  sauf  si  une  option  illégale a été
              trouvée.

       shift [n]
              Les paramètres positionnels à  partir  de  n+1  ...
              sont   renommés   en   $1   ....    Les  paramètres
              représentés par les nombres $# jusqu'à $#-n+1  sont
              supprimés.   Si  n  vaut  0, aucun paramètres n'est
              modifié.  Si n est omis, on suppose qu'il  vaut  1.
              n doit être un nombre non-négatif inférieur ou égal
              à $#.  Si n est  supérieur  à  $#,  les  paramètres
              positionnels  ne  sont  pas  modifiés.   Le code de
              retour est supérieur à 0 si n est supérieur à $# ou
              inférieur à 0. Sinon le code de retour est nul.

       suspend [-f]
              Suspend  l'exécution  du shell jusqu'à la réception
              d'un signal SIGCONT.  L'option -f élimine  le  mes­
              sage  d'erreur  s'il s'agit d'un shell de login, et
              force sa suspension. Le code de retour est nul sauf
              si l'on utilise un shell de login et si l'option -f
              n'est pas fournie, ou encore  si  le  mécanisme  de
              contrôle des jobs n'est pas disponible.

       test expr
       [ expr ]
              Renvoie  la valeur 0 (vrai) ou 1 (faux) en fonction
              de  l'évaluation  de  l'expression   conditionnelle
              expr.   Les  expressions  peuvent  être  unaires ou
              binaires. Les opérations unaires servent  générale­
              ment  à examiner l'état d'un fichier. Il existe des
              opérateurs de comparaison tant sur les chaînes  que
              sur  les  nombres.  Les opérateurs et les opérandes
              doivent être des arguments séparés. Si  un  fichier
              est  de  la  forme  /dev/fd/n,  alors  on  teste le
              descripteur de fichier n.
              -b fichier
                     Vrai si le fichier existe et est un  fichier
                     spécial bloc.
              -c fichier
                     Vrai  si le fichier existe et est un fichier
                     spécial caractère.
              -d fichier
                     Vrai si le fichier existe et est  un  réper­
                     toire
              -e fichier
                     Vrai si le fichier existe.
              -f fichier
                     Vrai  si le fichier existe et est un fichier
                     régulier.




GNU                      20 Janvier 1999                       66





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


              -g fichier
                     Vrai si le fichier existe et a son bit  Set-
                     GID positionné.
              -k fichier
                     Vrai  si  le  fichier  existe  et  a son bit
                     ``sticky'' positionné.
              -L fichier
                     Vrai si le fichier existe  et  est  un  lien
                     symbolique.
              -p fichier
                     Vrai  si  le  fichier  existe et est un tube
                     nommé (FIFO).
              -r fichier
                     Vrai si le fichier existe et est  accessible
                     en lecture.
              -s fichier
                     Vrai  si  le  fichier existe et a une taille
                     non nulle.
              -S fichier
                     Vrai si le fichier existe et est une socket
              -t fd  Vrai si fd est ouvert sur un terminal.
              -u fichier
                     Vrai si le fichier existe et a son bit  Set-
                     UID positionné.
              -w fichier
                     Vrai  si le fichier existe et est accessible
                     en écriture.
              -x fichier
                     Vrai si le fichier existe et est exécutable.
              -O fichier
                     Vrai  si  le  fichier existe et appartient à
                     l'ID effectif de l'utilisateur.
              -G fichier
                     Vrai si le fichier existe  et  appartient  à
                     l'ID effectif du groupe de l'utilisateur.
              fichier_1 -nt fichier_2
                     Vrai  si  le  fichier_1  est plus récent que
                     (nt=newer than) le  fichier_2,  d'après  les
                     dates de modification.
              fichier_1 -ot fichier_2
                     Vrai  si le fichier_1 est plus vieux que (ot
                     = older than) le fichier_2.
              fichier_1 -ef fichier_2
                     Vrai si lefichier_1 et le fichier_2 sont sur
                     le   même  péripherique  et  ont  les  mêmes
                     numéros d'i-noeuds.
              -z chaîne
                     Vrai si la longueur de la chaîne est  nulle.
              -n chaîne
              chaîne Vrai  si  la  longueur de la chaîne est non-
                     nulle.
              chaîne_1 = chaîne_2
                     Vrai si les deux chaînes sont égales.




GNU                      20 Janvier 1999                       67





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


              chaîne_1 != chaîne_2
                     Vrai si les deux chaînes sont différentes.
              ! expression
                     Vrai si l'expression est fausse.
              expression_1 -a expression_2
                     Vrai  si  l'expression_1  ET  l'expression_2
                     sont toutes deux vraies.
              expr1 -o expr2
                     Vrai si l'expression_1 OU l'expression_2 est
                     vraie.
              arg1 OP arg2
                     OP est l'un  des  opérateurs  suivants  -eq,
                     -ne,  -lt, -le, -gt, ou -ge.  Ces opérateurs
                     arithmétiques binaires renvoient  la  valeur
                     vraie  si  arg_1  est  respectivement  égal,
                     différent,  inférieur,  inférieur  ou  égal,
                     supérieur,  supérieur  ou égal à arg2.  Arg1
                     et arg2 peuvent être des  entiers  positifs,
                     des   entiers   négatifs,   ou  l'expression
                     spéciale -l chaîne, qui évalue  la  longueur
                     de la chaîne.

       times  Affiche  les durées cumulées utilisateur et système
              pour le shell et les processus lancés par ce shell.
              Le code de retour est nul.

       trap [-l] [cmd] [sigspec]
              La  commande  cmd  sera  lue et exécutée lorsque le
              shell recevra l'un des signaux sigspec.  Si cmd est
              absent ou si elle vaut -, tous les signaux indiqués
              reprennent leurs  comportements  originaux  (qu'ils
              avaient  au  démarrage  du  shell).  Si cmd est une
              chaîne nulle, les signaux  seront  ignorés  par  le
              shell  et par les commandes qu'il invoque.  sigspec
              peut être spécifié en indiquant des noms de signaux
              définis  dans  <signal.h>,  ou les numéros des sig­
              naux.  Si sigspec vaut EXIT  (0)  la  commande  cmd
              sera  exécutée  au moment de quitter le shell. Sans
              arguments, trap  affiche  la  liste  des  commandes
              associées  à  chaque numéro de signal.  L'option -l
              affiche la liste des  noms  de  signaux,  et  leurs
              numéros  correspondants.   Un argument -- désactive
              la recherche d'option dans le reste des  arguments.
              Les  signaux  ignorés lors de l'invocation du shell
              ne peuvent pas être  capturés  ni  reprendre  leurs
              comportements par défaut.  Lors de la création d'un
              processus fils,  les  signaux  capturés  reprennent
              leur comportement par défaut. Le code de retour est
              faux si un nom ou un numéro de signal est invalide,
              sinon trap renvoie une valeur vraie.

       type [-all] [-type | -path] nom [nom ...]
              sans  option,  indique comment chaque nom doit être
              interprété si on l'utilise en nom de commande.   Si



GNU                      20 Janvier 1999                       68





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


              l'attribut  -type est utilisé, type affiche une des
              phrases   suivantes   alias,   keyword,   function,
              builtin, ou file selon que le nom soit un alias, un
              mot-clé réservé au shell, une  fonction,  une  com­
              mande  interne, ou un fichier sur le disque.  Si le
              nom n'est pas trouvé, rien n'est affiché et le code
              de  retour  est  faux.   Si  l'argument  -path  est
              utilisé, type renvoie le nom du  fichier  qui  sera
              exécuté  si  l'on tape le nom en guise de commande,
              ou rien si le -type n'est pas file.   Si  une  com­
              mande  est  disponible  dans  la  table de hachage,
              -path affiche la valeur de cette table,  qui  n'est
              pas  nécéssairement le fichier apparaissant en pre­
              mier dans le PATH.  Si l'option -all est  invoquée,
              type  affiche  tous  les  emplacements contenant un
              exécutable du nom indiqué.  Ceci inclut  les  alias
              et les fonctions, sauf si l'option -path est égale­
              ment présente.  La table de hachage  des  commandes
              n'est  pas  consultée  avec  l'option  -all.   type
              accepte les raccourcis -a, -t, et -p à la place  de
              -all, -type, et -path, respectivement.  Un argument
              -- désactive la recherche d'option  dans  la  suite
              des arguments.  type renvoie vrai si l'un des argu­
              ments est trouvé, et faux si aucun n'a été  trouvé.

       ulimit [-SHacdfmstpnuv [limite]]
              Ulimit fournit, sur les systèmes qui le permettent,
              un mécanisme de controle des ressources disponibles
              pour  le  shell  et pour les processus qu'il lance.
              La valeur de la limite peut être un  nombre  (util­
              isant  les  unités particulières de la ressources),
              ou  la  valeur  unlimited.   Les  options  H  et  S
              précisent  si  la  limite doit être dure (Hard), ou
              souple (Soft). Une limite dure  ne  peut  pas  être
              augmentée  une  fois qu'elle a été positionnée. Une
              limite souple peut etre augmentée jusqu'à  la  hau­
              teur de la limite dure correspondante.  Par défaut,
              les limites fixées sont souples.  Si la limite  est
              omise,  on  affiche  la  valeur de la limite souple
              pour la ressource indiquée, sauf si l'option H  est
              fournie. Quand plusieurs ressources sont indiquées,
              leurs  noms,  et  leurs  unites  respectives   sont
              affichés  avant  les  valeurs.   Les  options  sont
              interprétées ainsi :
              -a     affichage de toutes les limites actuelles
              -c     la taille maximale  pour  la  création  d'un
                     fichier core
              -d     la  taille  maximale  du  segment de données
                     d'un processus
              -f     la taille maximale d'un fichier créé par  le
                     shell
              -m     la  taille  maximale  de la partie résidente
                     d'un processus
              -s     la taille maximale de la pile



GNU                      20 Janvier 1999                       69





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


              -t     la durée maximale, en seconde, de temps  CPU
                     accordé à un processus.
              -p     la  taille  d'un tube (pipe) en blocs de 512
                     octets (ceci n'est pas modifiable)
              -n     le  nombre  maximal   de   descripteurs   de
                     fichiers  ouverts  simultanément (la plupart
                     de systèmes ne permettent  pas  de  modifier
                     ceci)
              -u     le  nombre  maximal  de  processus autorisés
                     pour un seul utilisateur
              -v     la quantité de mémoire virtuelle  disponible
                     pour le shell

              Un argument -- désactive la recherche d'option dans
              le reste des arguments. Si une limite est  fournie,
              la  ressource  correspondante  recevra cette limite
              (l'option -a ne permet que l'affichage).  Si aucune
              option  n'est  indiquée,  la ressource -f est prise
              par défaut. Les valeurs s'expriment en kilo-octets,
              sauf pour -t, ou elles s'expriment en secondes, -p,
              qui utilise des unités de blocs de 512  octets,  -n
              et  -u,  qui n'ont pas d'unités. La valeur renvoyée
              est 0 sauf si une option illégale est détectée,  si
              un  argument  non-numérique autre que unlimited est
              fourni comme limite, ou si une  erreur  se  produit
              durant la modification de la limite.

       umask [-S] [mode]
              Le  masque  de création de fichier de l'utilisateur
              est fixé au mode indiqué.  Si mode commence par  un
              chiffre,  il  est interprété comme un nombre octal,
              sinon il est considéré comme un masque  symbolique,
              semblable  à  ceux  acceptes par chmod(1).  Si mode
              est omis, ou si l'option -S est fournie, la  valeur
              courante   du  masque  est  affichée.  L'option  -S
              affiche   le   masque   sous   forme    symbolique,
              l'affichage par défaut étant en octal.  Un argument
              -- désactive la recherche d'option  dans  la  suite
              des arguments. Le code de retour est nul si le mode
              a pu être changé correctement,  ou  si  on  a  omis
              l'argument mode, et faux sinon.

       unalias [-a] [nom ...]
              Suprime  le  nom  de la liste des alias définis. Si
              l'option -a est demandée,  toutes  les  définitions
              d'alias  sont  supprimées.  La  valeur renvoyée est
              vraie sauf si un nom mentionné n'est pas  un  alias
              defini.

       unset [-fv] [nom ...]
              Supprimer  la  variable (ou la fonction si l'option
              -f est mentionnée), associée à chaque nom  indiqué.
              Un argument -- désactive la recherche d'option dans
              la suite des arguments.  Remarquez que  PATH,  IFS,



GNU                      20 Janvier 1999                       70





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


              PPID,  PS1,  PS2,  UID, et EUID ne peuvent pas être
              supprimés, et que si une des variables RANDOM, SEC­
              ONDS,  LINENO,  ou HISTCMD est supprimée, elle perd
              ses propriétés  spécifiques,  même  s'il  elle  est
              recréée ultérieurement. Le code de retour est vrai,
              à moins qu'un des noms n'existe pas, ou ne soit pas
              suppressible.

       wait [n]
              Attend que le processus indique se termine, et ren­
              voie son code de retour.  n peut indiquer  un  PID,
              ou  un  job. S'il s'agit d'un indicateur de job, on
              attendra la fin de tous les processus du tube de ce
              job.   Si  n est omis, on attend la fin de tous les
              processus fils actuellement actifs, et le  code  de
              retour  sera zéro.  Si n se rapporte à un processus
              ou un job inexistant, le code de retour  sera  127.
              Dans  tous  les  autres cas, le code de retour sera
              celui du dernier processus ou job attendu.

VOIR AUSSI
       Bash Features, Brian Fox et Chet Ramey
       The Gnu Readline Library, Brian Fox et Chet Ramey
       The Gnu History Library, Brian Fox et Chet Ramey
       A System V Compatible Implementation of 4.2BSD Job
              Control, David Lennert
       Portable Operating System Interface (POSIX)  Part  2:
              Shell  and Utilities, IEEE
       [NDT]Le shell Bash par Newham et Rosenblatt est traduit en
              fran­ cais chez O'Reilly
       sh(1), ksh(1), csh(1)
       emacs(1), vi(1)
       readline(3)

FICHIERS
       /bin/bash
              L'exécutable bash.
       /etc/profile
              Le fichier d'initialisation globale,  exécutée  par
              les shells de login.
       ~/.bash_profile
              Le fichier d'initialisation personnalisée, exécutée
              par les shells de login.
       ~/.bashrc
              Le fichier de démarrage personnel, pour les  shells
              interactifs.
       ~/.bash_logout
              Le fichier de sortie des shells de login lors de la
              déconnection.
       ~/.inputrc
              Le fichier d'initialisation personnalisée de  read­
              line.





GNU                      20 Janvier 1999                       71





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


AUTEURS
              Brian Fox, Free Software Foundation (auteur princi­
              pal)
              bfox@ai.MIT.Edu

              Chet Ramey, Case Western Reserve University
              chet@ins.CWRU.Edu

RAPPORT DE BUG
       Si vous trouvez un bug dans bash, vous êtes  encouragés  à
       nous  en  faire part. Tout d'abord vous devez vous assurer
       qu'il s'agit réellement d'un dysfonctionnement,  et  qu'il
       apparaît bien dans la dernière version de bash disponible.

       Une fois que vous êtes sûrs qu'il s'agit  bien  d'un  bug,
       utilisez la commande bashbug pour nous envoyer un rapport.
       Si vous  avez  trouvé  une  correction,  n'hésitez  pas  à
       l'envoyer  en même temps.  Les simples suggestions, ou les
       remarques d'ordre `philosophique' peuvent être  transmises
       à  bug-bash@prep.ai.MIT.Edu  ou  postées  dans  le  groupe
       Usenet gnu.bash.bug.

       TOUS les rapports de bugs doivent contenir :

       Le numéro de version de bash
       Le matériel et le système d'exploitation utilisés
       La version du compilateur utilisé pour compiler bash.
       Une description du comportement du bug. [NDT : En anglais
                           évidem­ ment]
       Un petit script, ou une manipulation qui met en évidence
                           le  bug.

       bashbug insère automatiquement les trois premiers éléments
       de  cette liste dans le formulaire qu'il fournit pour rem­
       plir le rapport de bug.

       Les commentaires et rapports d'erreurs concernant la  ver­
       sion originale de cette page de manuel doivent être trans­
       mis à chet@ins.CWRU.Edu.  Ceux concernant la version fran­
       caise peuvent être envoyés à ccb@club-internet.fr.

BUGS
       Cet interpréteur est volumineux et lent.

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

       L'utilisation  des alias peut avoir des conséquences inat­
       tendues.

       Les commmandes internes de l'interpréteur et les fonctions
       ne  peuvent ni être arrétées (par contrôle-C) ni relancées
       (à l'aide de fg et bg)



GNU                      20 Janvier 1999                       72





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


       Les séquences de commandes de la forme `a ; b ; c' ne sont
       pas  gérées  proprement lors d'une interruption de proces­
       sus.  En  cas  de   suspension   d'une   telle   séquence,
       l'interpréteur  exécute immédiatement la commande suivante
       de la séquence. Il suffit de placer cette  séquence  entre
       parenthèses  pour  la  forcer  à créer un sous-shell, qui,
       lui, sera interruptible en bloc.

       Les commandes à l'intérieur de $(...) (cf SUBSTITUTION  DE
       COMMANDES)  ne  sont pas analysées avant la réalisation de
       la complétion. Celà peut retarder l'affichage de  messages
       d'erreurs  pendant  un certain temps après la frappe de la
       commande.

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


TRADUCTION
       Christophe Blaess, 1997.
       Mise à jour de bash 1.14 à bash 2.03 : Thierry Vignaud




































GNU                      20 Janvier 1999                       73