Man page - bash(1)

Packages contains this manual

Available languages:

en fr es it pl ja uk zh_TW zh_CN

Manual

BASH

NOM
SYNOPSIS
COPYRIGHT
DESCRIPTION
OPTIONS
ARGUMENTS
APPEL
DÉFINITIONS
MOTS RÉSERVÉS
GRAMMAIRE DE L’INTERPRÉTEUR
Commandes simples
Pipelines
Listes
Commandes composées
Coprocessus
DĂ©finitions des fonctions de l’interprĂ©teur
COMMENTAIRES
PROTECTIONS
PARAMÈTRES
ParamĂštres positionnels
ParamÚtres spéciaux
Variables de l’interprĂ©teur
Tableaux
DÉVELOPPEMENTS
Développement des accolades
Développement du tilde
Développement des paramÚtres
Substitution de commande
Développement arithmétique
Substitution de processus
Découpage en mots
Développement des chemins
Suppression des protections
REDIRECTIONS
Redirection d’entrĂ©e
Redirection de sortie
Ajout d’une sortie redirigĂ©e
Redirection de la sortie standard et de la sortie d’erreur standard
Ajout de la sortie standard et de la sortie d’erreur standard
Document en ligne
ChaĂźnes en ligne
Dédoublement de descripteurs de fichier
Déplacement de descripteurs de fichier
Ouverture en Lecture/Écriture d’un descripteur de fichier
ALIAS
FONCTIONS
ÉVALUATION ARITHMÉTIQUE
CONDITIONS
DÉVELOPPEMENT DES COMMANDES SIMPLES
EXÉCUTION DES COMMANDES
ENVIRONNEMENT D’EXÉCUTION DES COMMANDES
ENVIRONNEMENT
CODE DE RETOUR
SIGNAUX
CONTRÔLE DES TÂCHES
INVITES
READLINE
Notation readline
Initialisation de readline
Raccourcis clavier readline
Variables de readline
Constructions conditionnelles de readline
Recherche
Noms des commandes readline
Commandes de déplacement
Commandes de manipulation de l’historique
Commande d’édition de texte
Effacement et récupération
Arguments numériques
ComplĂštement
Macros clavier
Divers
ComplĂštement programmable
HISTORIQUE
DÉVELOPPEMENT DE L’HISTORIQUE
Indicateur d’évĂ©nement
Indicateurs de mots
Modificateurs
COMMANDES INTERNES DE L’INTERPRÉTEUR
MODE DE COMPATIBILITÉ DE L’INTERPRÉTEUR
INTERPRÉTEUR RESTREINT
VOIR AUSSI
FICHIERS
AUTEURS
SIGNALEMENTS DE BOGUES
BOGUES
TRADUCTION

NOM

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

SYNOPSIS

bash [ options ] [ chaĂźne_de_commande | fichier ]

COPYRIGHT

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

DESCRIPTION

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

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

OPTIONS

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

-c

Si l’option -c est prĂ©sente, les commandes sont lues depuis le premier argument chaĂźne_de_commande qui n’est pas une option. Si des arguments suivent la chaĂźne_de_commande , le premier argument est assignĂ© Ă  $0 et tous les autres sont affectĂ©s aux paramĂštres positionnels. Le nom de l’interprĂ©teur, utilisĂ© pour les messages d’avertissement et d’erreur, est fixĂ© par l’assignation Ă  $0 .

-i

Si l’option -i est prĂ©sente, l’interprĂ©teur est interactif .

-l

Faire que bash se comporte comme s’il avait Ă©tĂ© appelĂ© comme interprĂ©teur de commandes de connexion (consultez APPEL ci-dessous).

-r

Si l’option -r est prĂ©sente, l’interprĂ©teur devient restreint (consultez INTERPRÉTEUR RESTREINT ci-dessous).

-s

Si l’option -s est prĂ©sente ou s’il ne reste plus d’argument aprĂšs le traitement des options, alors les commandes sont lues depuis l’entrĂ©e standard. Cette option permet d’affecter les paramĂštres positionnels lors de l’appel d’un interprĂ©teur interactif ou de la lecture de l’entrĂ©e Ă  travers un tube.

-v

Afficher les lignes en entrĂ©e de l’interprĂ©teur lorsqu’elles sont lues.

-x

Afficher les commandes et leurs arguments Ă  mesure qu’elles sont exĂ©cutĂ©es.

-D

Une liste de toutes les chaĂźnes entre guillemets doubles prĂ©cĂ©dĂ©es de $ est affichĂ©e sur la sortie standard. Ce sont les chaĂźnes qui sont soumises Ă  une traduction quand le paramĂštre linguistique rĂ©gional n’est ni C ni POSIX . Cela implique l’option -n ; aucune commande ne sera exĂ©cutĂ©e.

[ -+ ] O [ option_shopt ]

option_shopt est une des options de l’interprĂ©teur acceptĂ©es par la commande interne shopt (consultez COMMANDES INTERNES DE L’INTERPRÉTEUR ci-dessous). Si option_shopt est prĂ©sente, -O crĂ©e cette option ; +O la dĂ©truit. Si option_shopt n’est pas fournie, les noms et valeurs des options de l’interprĂ©teur acceptĂ©es par shopt sont affichĂ©s sur la sortie standard. Si l’option d’appel est +O , la sortie est affichĂ©e dans un format rĂ©utilisable en entrĂ©e.

--

Deux caractÚres -- indiquent la fin des options et désactivent le traitement des arguments. Tous les arguments aprÚs le -- sont traités comme des noms de fichiers et paramÚtres. - est équivalent à -- .

Bash reconnaĂźt Ă©galement plusieurs options multicaractĂšres. Ces options doivent, pour ĂȘtre reconnues, apparaĂźtre sur la ligne de commande avant les options monocaractĂšres.
--debugger

Prend les dispositions pour que le paramĂ©trage du traçage soit exĂ©cutĂ© avant que l’interprĂ©teur dĂ©marre. Enclenche le mode de traçage Ă©tendu (consultez ci-dessous la description de l’option extdebug de la commande interne shopt ).

--dump-po-strings

Équivalent à -D , mais la sortie est dans le format des fichiers po (objets portables) de l’outil GNU gettext .

--dump-strings

Équivalent à -D .

--help

Affiche un message d’aide sur la sortie standard et termine avec succùs.

--init-file fichier
--rcfile
fichier

ExĂ©cuter les commandes contenues dans fichier plutĂŽt que celles du fichier d’initialisation commun Ă  tout le systĂšme /etc/bash.bashrc et que le fichier d’initialisation personnel standard ˜/.bashrc si l’interprĂ©teur est interactif (consultez APPEL ci-dessous).

--login

Équivalent à -l .

--noediting

Ne pas utiliser la bibliothĂšque GNU readline pour lire les lignes de commande, lorsque l’interprĂ©teur est interactif.

--noprofile

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

--norc

Ne pas lire ou exĂ©cuter le fichier de configuration commun Ă  tout le systĂšme /etc/bash.bashrc , ni le fichier personnel d’initialisation ˜/.bashrc lorsque l’interprĂ©teur est interactif. Cette option est activĂ©e par dĂ©faut si l’interprĂ©teur est appelĂ© sous le nom sh .

--posix

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

--restricted

L’interprĂ©teur devient restreint (consultez INTERPRÉTEUR RESTREINT ci-dessous).

--verbose

Équivalent à -v .

--version

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

ARGUMENTS

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

APPEL

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

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

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

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

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

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

Quand bash est dĂ©marrĂ© de façon non interactive, par exemple pour lancer un script, il consulte la variable BASH_ENV dans l’environnement, dĂ©veloppe son contenu si elle existe et considĂšre cette valeur comme le nom d’un fichier Ă  lire et exĂ©cuter. Bash se comporte comme si la commande suivante Ă©tait exĂ©cutĂ©e :

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi

mais la valeur de la variable PATH n’est pas utilisĂ©e pour rechercher le fichier.

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

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

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

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

DÉFINITIONS

Les définitions suivantes sont utilisées dans toute la suite ce document.

blanc

Une espace ou une tabulation.

mot

Une suite de caractĂšres considĂ©rĂ©e comme une unitĂ© Ă©lĂ©mentaire par l’interprĂ©teur. On parle Ă©galement de lexĂšme (« token »).

nom

Un mot ne contenant que des caractĂšres alphanumĂ©riques et des tirets bas (« underscore »), commençant par une lettre ou un tiret bas. On s’y rĂ©fĂšre Ă©galement sous le terme identificateur .

métacaractÚre

Un caractÚre qui, non protégé, sépare les mots. Un de ceux-ci :
| & ; ( ) < > space tab newline

opérateur de contrÎle

Un lexùme ayant une fonction de contrîle. C’est l’un des symboles suivants :
|| & && ; ;; ;& ;;& ( ) | |& <newline>

MOTS RÉSERVÉS

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

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

GRAMMAIRE DE L’INTERPRÉTEUR

Cette partie dĂ©crit la syntaxe des diffĂ©rentes formes de commande de l’interprĂ©teur.

Commandes simples

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

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

Pipelines

Un pipeline est une suite d’une ou plusieurs commandes sĂ©parĂ©es par un des opĂ©rateurs de contrĂŽle | ou |& . Le format d’un pipeline est :

[ time [ -p ]] [ ! ] commande_1 [ [ | âŽȘ |& ] commande_2 ... ]

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

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

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

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

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

Listes

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

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

Une suite d’un ou plusieurs changements de ligne peut apparaĂźtre dans une liste Ă  la place d’un point-virgule pour dĂ©limiter les commandes.

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

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

commande_1 && commande_2

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

Une liste OU a la forme

commande_1 || commande_2

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

Commandes composées

Une commande composĂ©e est l’une des constructions suivantes. Dans la plupart des cas, une liste dans une description de commande pourrait ĂȘtre sĂ©parĂ©e du reste de la commande par un ou plusieurs changements de ligne, et pourrait ĂȘtre suivie d’un changement de ligne Ă  la place d’un point-virgule.
(
liste )

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

{ liste ; }

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

(( expression ))

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

[[ expression ]]

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

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

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

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

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

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

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

( expression )

Renvoie la valeur de l’ expression . Cela peut ĂȘtre utilisĂ© pour surpasser la prioritĂ© normale des opĂ©rateurs.

! expression

Vrai si expression est fausse.

expression1 && expression2

Vrai si expression1 et expression2 sont toutes les deux vraies.

expression1 || expression2

Vrai si expression1 ou expression2 est vraie.

Les opĂ©rateurs && et || n’évaluent pas expression2 si la valeur de expression1 suffit Ă  dĂ©terminer la valeur renvoyĂ©e par la condition tout entiĂšre.

for nom [ [ in [ mot ... ] ] ; ] do liste ; done

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

for (( expr1 ; expr2 ; expr3 )) ; do liste ; done

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

select nom [ in mot ] ; do liste ; done

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

case mot in [ [(] motif [ | motif ] ... ) liste ;; ] ... esac

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

if liste ; then liste ; [ elif liste ; then liste ; ] ... [ else liste ; ]
fi

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

while liste-1 ; do liste-2 ; done
until
liste-1 ; do liste-2 ; done

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

Coprocessus

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

La syntaxe d’un coprocessus est :

coproc [ NOM ] commande [ redirections ]

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

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

coproc [ NOM ] { commande [ redirections ]; }

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

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

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

L’identifiant du processus (PID) de l’interprĂ©teur engendrĂ© pour exĂ©cuter le coprocessus est la valeur disponible de la variable NOM _PID. La commande interne wait peut ĂȘtre rĂ©utilisĂ©e pour attendre que le coprocessus soit terminĂ©.

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

DĂ©finitions des fonctions de l’interprĂ©teur

Une fonction de l’interprĂ©teur est un objet qui est appelĂ© comme une commande simple et qui exĂ©cute une commande composĂ©e avec un nouveau jeu de paramĂštres positionnels. Les fonctions de l’interprĂ©teur sont dĂ©clarĂ©es de la façon suivante :
nomfonction
() commande-composée [ redirection ]
function
nomfonction [()] commande-composée [ redirection ]

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

COMMENTAIRES

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

PROTECTIONS

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

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

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

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

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

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

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

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

Les séquences de caractÚres de la forme $ ' chaßne ' sont traitées comme une variante spéciale des guillemets simples. La séquence est développée en chaßne avec les caractÚres protégés par contre-oblique remplacés comme indiqué par la norme ANSI C. Les suites de protection par contre-oblique, si présentes, sont décodées comme suit :

\a

alerte (alarme) ;

\b

espace arriĂšre

\e

\E

caractÚre de protection ;

\f

saut de page (« form feed ») ;

\n

saut de ligne (« new line ») ;

\r

retour chariot

\t

tabulation horizontale

\v

tabulation verticale

\\

contre-oblique ;

\'

guillemet simple ;

\"

guillemet double ;

\?

point d’interrogation ;

\ nnn

le caractÚre 8 bits dont la valeur en octal vaut nnn (un à trois chiffres) ;

\x HH

le caractÚre 8 bits dont la valeur hexadécimale est HH (un ou deux chiffres hexadécimaux) ;

\u HHHH

le caractÚre Unicode (ISO/IEC 10646) dont la valeur hexadécimale est HHHH (un à quatre chiffres hexadécimaux) ;

\U HHHHHHHH

le caractÚre Unicode (ISO/IEC 10646) dont la valeur hexadécimale est HHHHHHHH (un à huit chiffres hexadécimaux) ;

\c x

un caractĂšre contrĂŽle- x .

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

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

PARAMÈTRES

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

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

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

nom =[ valeur ]

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

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

L’attribut nameref peut ĂȘtre affectĂ© Ă  une variable en utilisant l’option -n des commandes internes declare et local (consultez la description des commandes declare et local ci-dessous) pour crĂ©er une nameref ou une rĂ©fĂ©rence vers une autre variable. Cela permet aux variables d’ĂȘtre manipulĂ©es indirectement. À chaque fois qu’une variable nameref est rĂ©fĂ©rencĂ©e, affectĂ©e, dĂ©truite ou a ses attributs modifiĂ©s (autrement qu’en utilisant ou en changeant l’attribut nameref lui-mĂȘme), l’opĂ©ration est en fait rĂ©alisĂ©e sur la variable indiquĂ©e par la valeur de la variable nameref . nameref est gĂ©nĂ©ralement utilisĂ©e dans des fonctions d’interprĂ©teur pour rĂ©fĂ©rencer une variable dont le nom est passĂ© en argument de la fonction. Par exemple, si un nom de variable est passĂ© en premier argument Ă  une fonction d’interprĂ©teur, exĂ©cuter

declare -n ref=$1

dans la fonction crĂ©e une variable de nameref ref dont la valeur est le nom de la variable passĂ©e en premier argument. Les rĂ©fĂ©rences et affectations de ref et les modifications de ses attributs sont traitĂ©es comme des rĂ©fĂ©rences, affectations et modifications d’attribut sur la variable dont le nom a Ă©tĂ© passĂ© par $1 . Si la variable de contrĂŽle dans une boucle for a l’attribut nameref , la liste de mots peut ĂȘtre une liste de variables d’interprĂ©teur et une rĂ©fĂ©rence de nom est Ă©tablie pour chaque mot de la liste, tour Ă  tour, lorsque la boucle est exĂ©cutĂ©e. L’attribut nameref ne peut pas ĂȘtre donnĂ© aux variables de type tableau. Cependant, les variables nameref peuvent rĂ©fĂ©rencer des variables de type tableau et des variables de type tableau indicĂ©. nameref peut ĂȘtre dĂ©truit en utilisant l’option -n de la commande interne unset . Sinon, si unset est exĂ©cutĂ© avec le nom d’une variable nameref en argument, la variable rĂ©fĂ©rencĂ©e par la variable nameref sera dĂ©truite.

ParamĂštres positionnels

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

Un paramĂštre positionnel constituĂ© de plusieurs chiffres doit ĂȘtre encadrĂ© par des accolades lors de son dĂ©veloppement (consultez DÉVELOPPEMENTS ci-dessous).

ParamÚtres spéciaux

L’interprĂ©teur traite plusieurs paramĂštres spĂ©cifiquement. Ces paramĂštres peuvent uniquement ĂȘtre consultĂ©s, il n’est pas permis de leur affecter une valeur.

*

Se dĂ©veloppe en l’ensemble des paramĂštres positionnels, commençant par le premier. Quand le dĂ©veloppement n’est pas entre guillemets doubles, tous les paramĂštres positionnels se dĂ©veloppent en mots sĂ©parĂ©s. Dans les contextes oĂč il sont rĂ©alisĂ©s, ces mots sont soumis Ă  d’autres dĂ©coupages en mots et dĂ©veloppements de chemin. Quand le dĂ©veloppement se produit entre des guillemets doubles, * se transforme en un seul mot constituĂ© de la valeur de tous les paramĂštres positionnels sĂ©parĂ©s par le premier caractĂšre de la variable spĂ©ciale IFS . C’est-Ă -dire que "$*" est Ă©quivalent Ă  "$1 c $2 c ..." , oĂč c est le premier caractĂšre de la valeur de la variable IFS . Si IFS est inexistante, les paramĂštres sont sĂ©parĂ©s par des espaces. Si IFS est NULL, les paramĂštres sont accolĂ©s sans sĂ©parateurs.

@

Se dĂ©veloppe en ensemble des paramĂštres positionnels, commençant par le premier. Dans les contextes oĂč le dĂ©coupage en mots est rĂ©alisĂ©, chaque paramĂštre positionnel se dĂ©veloppe en un mot sĂ©paré ; si ces mots ne sont pas entre des guillemets doubles, ils sont sujets au dĂ©coupage de mot. Dans les contextes oĂč il n’y a pas de dĂ©coupage en mots, chaque paramĂštre positionnel se dĂ©veloppe en un mot distinct sĂ©parĂ© par des espaces. Quand le dĂ©veloppement a lieu entre guillemets doubles, chaque paramĂštre se dĂ©veloppe en un mot distinct. C’est-Ă -dire que "$@" est Ă©quivalent Ă  "$1" "$2" .... Si le dĂ©veloppement des guillemets doubles survient dans un mot, le dĂ©veloppement du premier paramĂštre est accolĂ© Ă  la premiĂšre partie du mot d’origine et le dĂ©veloppement du dernier paramĂštre est accolĂ© Ă  la derniĂšre partie du mot d’origine. Quand il n’y a pas de paramĂštres positionnels, "$@" et $@ ne se dĂ©veloppent en rien (c’est-Ă -dire qu’ils sont simplement Ă©liminĂ©s).

#

Correspond au nombre de paramÚtres positionnels, en base décimale.

?

Se développe en état final du dernier pipeline exécuté au premier plan.

-

Est remplacĂ© par la liste des options de l’interprĂ©teur indiquĂ©es durant l’appel, configurĂ©es avec la commande interne set ou celles créées par l’interprĂ©teur lui-mĂȘme (comme avec l’option -i ).

$

Se transforme en PID de l’interprĂ©teur. Dans un sous-interprĂ©teur, il se transforme en PID de l’interprĂ©teur et non pas du sous-interprĂ©teur.

!

Se transforme en PID de la derniĂšre tĂąche placĂ©e en arriĂšre-plan, soit exĂ©cutĂ©e comme une commande asynchrone, soit en utilisant la commande interne bg (consultez CONTRÔLE DES TÂCHES ci-dessous).

0

Se dĂ©veloppe en nom de l’interprĂ©teur ou du script. Ce paramĂštre est créé lors de l’initialisation de l’interprĂ©teur. Si bash est appelĂ© avec un fichier de commandes, $0 correspond au nom de ce fichier. Si bash est lancĂ© avec l’option -c , alors $0 contient le premier argument, s’il y en a un, aprĂšs la chaĂźne de commandes Ă  exĂ©cuter. Sinon, ce paramĂštre contient le nom de fichier utilisĂ© pour appeler bash , comme indiquĂ© par l’argument zĂ©ro.

Variables de l’interprĂ©teur

Les variables suivantes sont créées par l’interprĂ©teur :

_

Au lancement de l’interprĂ©teur, contient le chemin d’accĂšs utilisĂ© pour appeler l’interprĂ©teur, ou le script en cours d’exĂ©cution tel qu’il est passĂ© dans l’environnement ou dans la liste des arguments. Devient ensuite le dernier argument de la commande simple prĂ©cĂ©dente exĂ©cutĂ©e au premier plan, aprĂšs dĂ©veloppement. Contient Ă©galement le chemin d’accĂšs complet de chaque commande exĂ©cutĂ©e et se retrouve dans l’environnement exportĂ© Ă  cette commande. Lors de la vĂ©rification de l’arrivĂ©e de courrier, contient le nom du fichier de courrier en cours de consultation.

BASH

Se dĂ©veloppe en chemin d’accĂšs complet Ă  l’instance actuelle de bash .

BASHOPTS

Liste des options activĂ©es de l’interprĂ©teur, sĂ©parĂ©es par des deux-points « : ». Chaque mot de la liste est un argument correct pour l’option -s de la commande interne shopt (consultez COMMANDES INTERNES DE L’INTERPRÉTEUR ci-dessous). Les options apparaissant dans BASHOPTS sont celles indiquĂ©es comme actives par shopt . Si cette variable est dans l’environnement au lancement de bash , chaque option de la liste est activĂ©e avant de lire les fichiers d’initialisation. Cette variable est en lecture seule.

BASHPID

Se transforme en PID du processus de l’interprĂ©teur bash actuel. DiffĂšre de $$ sous certaines conditions, comme dans les sous-interprĂ©teurs ne nĂ©cessitant pas que bash soit rĂ©initialisĂ©. Les assignations Ă  BASHPID n’ont pas d”effet. Si BASHPID est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

BASH_ALIASES

Une variable de type tableau associatif dont les Ă©lĂ©ments correspondent Ă  une liste interne d’alias comme celle gĂ©rĂ©e par la commande interne alias . Les Ă©lĂ©ments ajoutĂ©s Ă  ce tableau apparaissent dans la liste d’alias ; cependant, la destruction d’élĂ©ments du tableau ne provoque pas actuellement le retrait des alias de la liste d’alias. Si BASH_ALIASES est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

BASH_ARGC

Une variable de type tableau contenant le nombre de paramĂštres de chaque trame de la pile d’appel d’exĂ©cution de l’interprĂ©teur bash actuel. Le nombre de paramĂštres du sous-programme actuel (fonction de l’interprĂ©teur ou du script exĂ©cutĂ© par . ou source ) est au sommet de la pile. Lorsqu’un sous-programme est exĂ©cutĂ©, le nombre de paramĂštres passĂ©s est placĂ© dans BASH_ARGC . L’interprĂ©teur crĂ©e BASH_ARGC seulement dans le mode de traçage Ă©tendu (consultez ci-dessous la description de l’option extdebug de la commande interne shopt ). La configuration de extdebug aprĂšs que l’interprĂ©teur ait dĂ©marrĂ© l’exĂ©cution d’un script, ou le rĂ©fĂ©rencement de cette variable quand extdebug n’existe pas, peut provoquer une incohĂ©rence des valeurs.

BASH_ARGV

Une variable de type tableau contenant tous les paramĂštres de la pile d’appel d’exĂ©cution de l’interprĂ©teur bash actuel. Le dernier paramĂštre du dernier sous-programme est au sommet de la pile ; le premier paramĂštre de l’appel initial est en bas. Lorsqu’un sous-programme est exĂ©cutĂ©, les paramĂštres fournis sont placĂ©s dans BASH_ARGV . BASH_ARGV est créé uniquement dans le mode de traçage Ă©tendu (consultez ci-dessous la description de l’option extdebug de la commande interne shopt ). La configuration de extdebug aprĂšs que l’interprĂ©teur ait dĂ©marrĂ© l’exĂ©cution d’un script, ou le rĂ©fĂ©rencement de cette variable quand extdebug n’existe pas peut provoquer une incohĂ©rence des valeurs.

BASH_ARGV0

Quand elle est rĂ©fĂ©rencĂ©e, cette variable dĂ©veloppe le nom de l’interprĂ©teur ou du script de l’interprĂ©teur (identique Ă  $0 ; voir la description du paramĂštre spĂ©cial 0 ci-dessus). L’affectation d’une valeur Ă  BASH_ARGV0 fait que cette valeur est aussi assignĂ©e Ă  $0 . Si BASH_ARGV0 est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

BASH_CMDS

Une variable de type tableau associatif dont les Ă©lĂ©ments correspondent Ă  une table de hachage interne de commandes comme celle gĂ©rĂ©e par la commande interne hash . Les Ă©lĂ©ments ajoutĂ©s Ă  ce tableau apparaissent dans la table de hachage ; cependant, la destruction d’élĂ©ments du tableau ne provoque pas actuellement le retrait des noms de commandes de la table de hachage. Si BASH_CMDS est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

BASH_COMMAND

La commande en cours d’exĂ©cution ou sur le point d’ĂȘtre exĂ©cutĂ©e, Ă  moins que l’interprĂ©teur n’exĂ©cute une commande Ă  la suite d’une capture, auquel cas c’est la commande s’exĂ©cutant au moment de la capture. Si BASH_COMMAND est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

BASH_EXECUTION_STRING

L’argument commande de l’option d’appel -c .

BASH_LINENO

Une variable de type tableau dont les Ă©lĂ©ments sont les numĂ©ros de ligne des fichiers sources oĂč chaque Ă©lĂ©ment correspondant de FUNCNAME a Ă©tĂ© invoquĂ©. ${BASH_LINENO[ $i ]} est le numĂ©ro de la ligne dans le fichier source ( ${BASH_SOURCE[ $i+1 ]} ) oĂč ${FUNCNAME[ $i ]} a Ă©tĂ© appelĂ© (ou ${BASH_LINENO[ $i-1 ]} si consultĂ© depuis une autre fonction de l’interprĂ©teur). Utilisez LINENO pour obtenir le numĂ©ro de ligne actuel.

BASH_LOADABLES_PATH

Liste des rĂ©pertoires, sĂ©parĂ©s par des deux-points « : », que l’interprĂ©teur consulte lorsqu’il cherche les commandes internes chargeables dynamiquement spĂ©cifiĂ©es par la commande enable .

BASH_REMATCH

Une variable de type tableau dont les Ă©lĂ©ments sont affectĂ©s avec l’opĂ©rateur binaire =˜ dans la commande conditionnelle [[ . L’élĂ©ment d’indice 0 est la partie de la chaĂźne correspondant Ă  l’expression rationnelle complĂšte. L’élĂ©ment d’indice n est la partie de la chaĂźne correspondant Ă  la n -iĂšme sous-expression entre parenthĂšses.

BASH_SOURCE

Une variable de type tableau dont les Ă©lĂ©ments sont les noms des fichiers source oĂč les noms des fonctions d’interprĂ©teur correspondants Ă  la variable de type tableau FUNCNAME sont dĂ©finis. La fonction d’interprĂ©teur ${FUNCNAME[ $i ]} est dĂ©finie dans le fichier ${BASH_SOURCE[ $i ]} et appelĂ©e depuis ${BASH_SOURCE[ $i+1 ]} .

BASH_SUBSHELL

IncrĂ©mentĂ©e dans tous les sous-interprĂ©teurs et environnements de sous-interprĂ©teur quand l’interprĂ©teur commence Ă  s’exĂ©cuter dans cet environnement. La valeur initiale est 0 . Si BASH_COMMAND est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

BASH_VERSINFO

Une variable de type tableau protégée en écriture dont les éléments représentent la version de cette instance de bash . Cette valeur est affectée aux éléments du tableau comme suit :

BASH_VERSINFO[ 0 ]

Le numéro majeur de la version ( release ).

BASH_VERSINFO[ 1 ]

Le numéro mineur de la version ( version ).

BASH_VERSINFO[ 2 ]

Le niveau de correctif.

BASH_VERSINFO[ 3 ]

Le numéro de compilation.

BASH_VERSINFO[ 4 ]

Le statut de cette version (par exemple beta1 ).

BASH_VERSINFO[ 5 ]

La valeur de MACHTYPE .

BASH_VERSION

Se développe en une chaßne décrivant le numéro de version de cette instance de bash .

COMP_CWORD

Un indice dans ${COMP_WORDS} du mot contenant la position actuelle du curseur. Cette variable n’est disponible que dans les fonctions de l’interprĂ©teur appelĂ©es par les outils de complĂštement programmables (consultez ComplĂštement programmable ci-dessous).

COMP_KEY

La touche (ou derniĂšre touche d’une suite de touches) utilisĂ©e pour appeler la fonction de complĂštement actuelle.

COMP_LINE

La ligne de commande actuelle. Cette variable n’est disponible que dans les fonctions de l’interprĂ©teur appelĂ©es par les outils de complĂštement programmables (consultez ComplĂštement programmable ci-dessous).

COMP_POINT

L’indice de la position actuelle du curseur relatif au dĂ©but de la commande actuelle. Si la position actuelle du curseur est Ă  la fin de la commande actuelle, la valeur de cette variable est Ă©gale Ă  ${#COMP_LINE} . Cette variable n’est disponible que dans les fonctions de l’interprĂ©teur et les commandes externes appelĂ©es par les outils de complĂštement programmables (consultez ComplĂštement programmable ci-dessous).

COMP_TYPE

ConfigurĂ©e Ă  une valeur entiĂšre correspondant au type de complĂštement essayĂ© qui a provoquĂ© l’appel d’une fonction de complĂštement : TAB pour un complĂštement normal, ? pour l’affichage des complĂštements aprĂšs tabulations successives, ! pour l’affichage des alternatives de complĂštement de mot partiel, @ pour afficher les complĂštements si le mot n’est pas modifiĂ©, ou % pour le menu de complĂštement. Cette variable n’est disponible que dans les fonctions de l’interprĂ©teur et les commandes externes appelĂ©es par les outils de complĂštement programmables (consultez ComplĂštement programmable ci-dessous).

COMP_WORDBREAKS

Le jeu de caractĂšres que la bibliothĂšque readline considĂšre comme sĂ©parateurs de mots lors du complĂštement de mot. Si COMP_WORDBREAKS est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

COMP_WORDS

Une variable de type tableau (consultez Tableaux ci-dessous) consistant en mots individuels de la ligne de commande actuelle. La ligne est dĂ©coupĂ©e en mots comme readline la dĂ©couperait, en utilisant COMP_WORDBREAKS tel que dĂ©crit ci-dessus. Cette variable n’est disponible que dans les fonctions de l’interprĂ©teur appelĂ©es par les outils de complĂštement programmables (consultez ComplĂštement programmable ci-dessous).

COPROC

Une variable de type tableau (consultez Tableaux ci-dessous) créée pour représenter les descripteurs de fichier pour les sorties depuis et les entrées vers un coprocessus non nommé (consultez Coprocessus ci-dessus).

DIRSTACK

Une variable de type tableau (consultez Tableaux ci-dessous) reprĂ©sentant le contenu actuel de la pile de rĂ©pertoires. Les rĂ©pertoires apparaissent dans la pile dans l’ordre dans lequel la commande interne dirs les affiche. Les affectations des Ă©lĂ©ments de cette variable tableau peuvent ĂȘtre utilisĂ©s pour modifier les rĂ©pertoires dĂ©jĂ  dans la pile, mais les commandes internes pushd et popd doivent ĂȘtre utilisĂ©es pour ajouter et enlever des rĂ©pertoires. L’affectation de cette variable ne modifiera pas le rĂ©pertoire actuel. Si DIRSTACK est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

EPOCHREALTIME

À chaque fois que ce paramĂštre est consultĂ©, il se dĂ©veloppe en nombre de secondes Ă©coulĂ©es depuis l’Epoch Unix (consultez time (3)) comme valeur en virgule flottante avec une granularitĂ© d’une microseconde. Les affectations Ă  EPOCHREALTIME sont ignorĂ©es. Si EPOCHREALTIME est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

EPOCHSECONDS

À chaque fois que ce paramĂštre est consultĂ©, il se dĂ©veloppe en nombre de secondes Ă©coulĂ©es depuis l’Epoch Unix (consultez time (3)). Les affectations Ă  EPOCHSECONDS sont ignorĂ©es. Si EPOCHSECONDS est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

EUID

Contient l’UID effectif de l’utilisateur, initialisĂ© au dĂ©marrage de l’interprĂ©teur. Cette variable est en lecture seule.

FUNCNAME

Une variable de type tableau contenant le nom de toutes les fonctions de l’interprĂ©teur actuellement dans la pile d’appel d’exĂ©cution. L’élĂ©ment d’indice 0 est le nom de l’une des fonctions en cours d’exĂ©cution dans l’interprĂ©teur. L’élĂ©ment le plus bas (celui avec l’indice le plus grand) est "main". Cette variable n’existe que si une fonction de l’interprĂ©teur est en cours d’exĂ©cution. Les affectations de FUNCNAME n’ont aucun effet. Si FUNCNAME est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

Cette variable peut ĂȘtre utilisĂ©e avec BASH_LINENO et BASH_SOURCE . Chaque Ă©lĂ©ment de FUNCNAME a des Ă©lĂ©ments correspondant dans BASH_LINENO et BASH_SOURCE pour dĂ©crire la pile d’appel. Par exemple, ${FUNCNAME[ $i ]} a Ă©tĂ© appelĂ© depuis le fichier ${BASH_SOURCE[ $i+1 ]} Ă  la ligne numĂ©ro ${BASH_LINENO[ $i ]} . La commande interne caller affiche la pile d’appel actuelle utilisant ces renseignements.

GROUPS

Une variable de type tableau contenant la liste des groupes dont l’utilisateur est membre. Les affectations de GROUPS n’ont aucun effet. Si GROUPS est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

HISTCMD

Le numĂ©ro d’historique, ou l’indice dans la file d’historique, de la commande en cours. Les affectations de HISTCMD sont ignorĂ©es. Si HISTCMD est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

HOSTNAME

Automatiquement configurée au nom de la machine actuelle.

HOSTTYPE

Automatiquement configurĂ©e en chaĂźne dĂ©crivant de façon unique le type de machine sur laquelle bash s’exĂ©cute. La valeur par dĂ©faut dĂ©pend du systĂšme.

LINENO

Chaque fois que ce paramĂštre est consultĂ©, l’interprĂ©teur le remplace par un nombre dĂ©cimal reprĂ©sentant le numĂ©ro de la ligne actuelle (commençant Ă  1), au sein du script ou de la fonction. Hors d’un script ou d’une fonction, la valeur n’a pas nĂ©cessairement de sens. Si LINENO est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

MACHTYPE

Automatiquement configurĂ©e en chaĂźne dĂ©crivant le type du systĂšme sur lequel bash s’exĂ©cute, dans le format standard de GNU processeur-compagnie-systĂšme . La valeur par dĂ©faut dĂ©pend du systĂšme.

MAPFILE

Une variable de type tableau (consultez Tableaux ci-dessous) créée pour reprĂ©senter le texte lu par la commande interne mapfile si aucun nom de variable n’a Ă©tĂ© fourni.

OLDPWD

Le répertoire de travail précédent tel que configuré par la commande cd .

OPTARG

La valeur du dernier argument d’option traitĂ© par la commande interne getopts (consultez COMMANDES INTERNES DE L’INTERPRÉTEUR ci-dessous).

OPTIND

L’indice du prochain argument à traiter par la commande interne getopts (consultez COMMANDES INTERNES DE L’INTERPRÉTEUR ci-dessous).

OSTYPE

Automatiquement configurĂ©e en chaĂźne dĂ©crivant le systĂšme d’exploitation sur lequel bash s’exĂ©cute. La valeur par dĂ©faut dĂ©pend du systĂšme.

PIPESTATUS

Une variable de type tableau (consultez Tableaux ci-dessous) contenant une liste des états finaux des processus exécutés dans le pipeline exécuté le plus récemment au premier plan (qui peut éventuellement contenir une seule commande).

PPID

L’identifiant du processus parent de l’interprĂ©teur. Cette variable est en lecture seule.

PWD

Le répertoire de travail actuel tel que configuré par la commande cd .

RANDOM

À chaque fois que ce paramĂštre est consultĂ©, un entier alĂ©atoire entre 0 et 32767 est engendrĂ©. L’affectation d’une valeur Ă  RANDOM initialise (ensemence) la suite de nombres alĂ©atoires. Si RANDOM est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

READLINE_ARGUMENT

Tout argument numĂ©rique donnĂ© Ă  une commande readline qui a Ă©tĂ© dĂ©finie en utilisant "bind -x" (consultez COMMANDES INTERNES DE L’INTERPRÉTEUR ci-dessous) quand il a Ă©tĂ© invoquĂ©.

READLINE_LINE

Le contenu du tampon de ligne readline , pour utiliser avec "bind -x" (consultez COMMANDES INTERNES DE L’INTERPRÉTEUR ci-dessous).

READLINE_MARK

La position de la marque (point d’insertion enregistrĂ©) dans le tampon de ligne readline , pour utiliser avec "bind -x" (consultez COMMANDES INTERNES DE L’INTERPRÉTEUR ci-dessous). Les caractĂšres entre le point d’insertion et la marque sont souvent appelĂ©s la zone .

READLINE_POINT

La position du point d’insertion dans le tampon de ligne readline , pour utiliser avec "bind -x" (consultez COMMANDES INTERNES DE L’INTERPRÉTEUR ci-dessous).

REPLY

ConfigurĂ©e en ligne de saisie lue par la commande interne read lorsqu’aucun argument n’a Ă©tĂ© fourni.

SECONDS

À chaque fois que ce paramĂštre est consultĂ©, il se dĂ©veloppe en nombre de secondes Ă©coulĂ©es depuis le lancement de l’interprĂ©teur. Si une valeur est affectĂ©e Ă  SECONDS , la valeur renvoyĂ©e lors d’une consultation ultĂ©rieure est le temps en seconde Ă©coulĂ© depuis l’affectation, ajoutĂ© Ă  la valeur affectĂ©e. Le nombre de secondes entre le moment du lancement de l’interprĂ©teur et l’heure actuelle sont toujours dĂ©terminĂ©s en interrogeant l’horloge systĂšme. Si SECONDS est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

SHELLOPTS

Liste des options activĂ©es de l’interprĂ©teur, sĂ©parĂ©es par des deux-points « : ». Chaque mot de la liste est un argument correct pour l’option -o de la commande interne set (consultez COMMANDES INTERNES DE L’INTERPRÉTEUR ci-dessous). Les options apparaissant dans SHELLOPTS sont celles indiquĂ©es comme actives par set -o . Si cette variable est dans l’environnement au lancement de bash , chaque option de la liste est activĂ©e avant de lire les fichiers d’initialisation. Cette variable est en lecture seule.

SHLVL

IncrĂ©mentĂ© de 1 Ă  chaque appel d’une instance de bash .

SRANDOM

Cette variable engendre un nombre pseudo-alĂ©atoire de 32 bits chaque fois qu’elle est consultĂ©e. Le gĂ©nĂ©rateur de nombres alĂ©atoires n’est pas linĂ©aire sur les systĂšmes qui prennent en charge /dev/urandom ou arc4random , aussi chaque nombre renvoyĂ© n’a aucune relation avec les nombres prĂ©cĂ©dents. Le gĂ©nĂ©rateur de nombre alĂ©atoire ne peut pas ĂȘtre ensemencĂ©, aussi les affectations Ă  cette variable n’ont aucun effet. Si SRANDOM est dĂ©truite, elle perd ses propriĂ©tĂ©s spĂ©ciales, mĂȘme si elle est recréée par la suite.

UID

Contient l’UID de l’utilisateur actuel, initialisĂ© au dĂ©marrage de l’interprĂ©teur. Cette variable est en lecture seule.

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

La valeur est utilisĂ©e pour dĂ©finir le niveau de compatibilitĂ© de l’interprĂ©teur. Consultez MODE DE COMPATIBILITÉ DE L’INTERPRÉTEUR ci-dessous pour une description des diffĂ©rents niveaux de compatibilitĂ© et leurs consĂ©quences. La valeur peut ĂȘtre un nombre dĂ©cimal (par exemple 4.2) ou entier (par exemple 42) correspondant au niveau de compatibilitĂ© voulu. Si BASH_COMPAT est dĂ©truite ou dĂ©finie comme une chaĂźne vide, le niveau de compatibilitĂ© est dĂ©fini Ă  la valeur par dĂ©faut de la version actuelle. Si BASH_COMPAT est dĂ©finie Ă  une valeur de niveau de compatibilitĂ© impossible, l’interprĂ©teur affiche un message d’erreur et dĂ©finit le niveau de compatibilitĂ© Ă  la valeur par dĂ©faut de la version actuelle. Les valeurs possibles correspondent aux niveaux de compatibilitĂ© dĂ©crits ci-dessous dans MODE DE COMPATIBILITÉ DE L’INTERPRÉTEUR . Par exemple, 4.2 et 42 sont des valeurs possibles qui correspondent Ă  l’option compat42 de shopt et dĂ©finissent le niveau de compatibilitĂ© Ă  42. La version actuelle est aussi une valeur possible.

BASH_ENV

Si ce paramĂštre existe lorsque bash exĂ©cute un script, sa valeur est considĂ©rĂ©e comme un nom de fichier contenant les commandes d’initialisation de l’interprĂ©teur, comme dans ˜/.bashrc . La valeur de BASH_ENV est soumise au dĂ©veloppement des paramĂštres, Ă  la substitution de commande et au dĂ©veloppement arithmĂ©tique avant d’ĂȘtre considĂ©rĂ©e comme un nom de fichier. PATH n’est pas utilisĂ©e pour rechercher le fichier obtenu.

BASH_XTRACEFD

Si configurĂ©e Ă  une valeur entiĂšre correspondant Ă  un descripteur de fichier correct, bash Ă©crira la trace de sortie si set -x est activĂ© vers ce descripteur de fichier. Le descripteur de fichier est fermĂ© quand BASH_XTRACEFD est dĂ©truite ou qu’une nouvelle valeur lui est affectĂ©e. DĂ©truire BASH_XTRACEFD ou lui affecter la chaĂźne vide conduit la trace de sortie Ă  ĂȘtre envoyĂ©e vers la sortie d’erreur standard. Remarquez que configurer BASH_XTRACEFD Ă  2 (le descripteur de fichier de la sortie d’erreur standard) puis la dĂ©truire revient Ă  fermer la sortie d’erreur standard.

CDPATH

Le chemin de recherche de la commande interne cd . Il s’agit d’une liste de rĂ©pertoires, sĂ©parĂ©s par des deux-points « : », que l’interprĂ©teur consulte lorsqu’il cherche un sous-rĂ©pertoire destination de la commande cd . Un exemple de valeur est ".:˜:/usr".

CHILD_MAX

DĂ©finir le nombre de valeurs d’état de sortie des enfants dont l’interprĂ©teur doit se souvenir. Bash ne permettra pas Ă  cette valeur d’ĂȘtre infĂ©rieure Ă  un minimum imposĂ© par POSIX, ni d’ĂȘtre supĂ©rieure Ă  une valeur maximale (8192 pour l’instant). La valeur minimale dĂ©pend du systĂšme.

COLUMNS

UtilisĂ©e par la commande composĂ©e select pour dĂ©terminer la largeur du terminal lors de l’affichage des listes de sĂ©lection. Automatiquement configurĂ©e si l’option checkwinsize est activĂ©e ou dans un interprĂ©teur interactif Ă  la rĂ©ception d’un signal SIGWINCH .

COMPREPLY

Une variable de type tableau dans lequel bash lit les complĂštements possibles produits par une fonction de l’interprĂ©teur appelĂ©e par les outils de complĂštement programmables (consultez ComplĂštement programmable ci-dessous). Chaque Ă©lĂ©ment du tableau contient un complĂštement possible.

EMACS

Si bash trouve cette variable dans l’environnement lorsque l’interprĂ©teur dĂ©marre avec la valeur "t", il considĂšre que l’interprĂ©teur est lancĂ© dans un tampon d’interprĂ©teur d’Emacs et dĂ©sactive l’édition en ligne.

ENV

DĂ©veloppĂ© et exĂ©cutĂ© de façon similaire Ă  BASH_ENV (consultez APPEL ci-dessus) quand l’interprĂ©teur interactif est invoquĂ© en mode POSIX .

EXECIGNORE

Une liste, sĂ©parĂ©e par des deux-points « : », de motifs de l’interprĂ©teur (voir Motifs gĂ©nĂ©riques ) dĂ©finissant la liste de noms de fichier Ă  ignorer par la commande de recherche utilisant PATH . Les fichiers dont les noms de chemin complets correspondent Ă  un de ces motifs ne sont pas considĂ©rĂ©s comme des fichiers exĂ©cutables en vue du complĂštement et de l’exĂ©cution de commande au moyen d’une recherche dans PATH . Cela n’affecte pas le comportement des commandes [ , test et [[ . Les noms de chemin complets dans la table de hachage des commandes ne sont pas sujets Ă  EXECIGNORE . Utiliser cette variable pour ignorer des fichiers de bibliothĂšque partagĂ©e dont le bit exĂ©cutable est prĂ©sent, mais qui ne sont pas des fichiers exĂ©cutables. La correspondance de motif respecte la configuration de l’option d’interprĂ©teur extglob .

FCEDIT

L’éditeur par dĂ©faut utilisĂ© par la commande interne fc .

FIGNORE

Une liste de suffixes, sĂ©parĂ©s par des deux-points « : », que bash ignorera lors du complĂštement des noms de fichiers (consultez READLINE ci-dessous). Un nom de fichier dont le suffixe correspond Ă  l’un de ceux mentionnĂ©s dans FIGNORE est exclu de la liste des noms de fichiers correspondant pour le complĂštement. Par exemple, cette variable peut prendre la valeur ".o:˜" (des protections sont nĂ©cessaires pour l’affectation d’une valeur Ă  cette variable qui contient des tildes).

FUNCNEST

Si configurĂ©e Ă  une valeur numĂ©rique strictement positive, cela dĂ©finit le niveau maximal d’imbrication de fonctions. Les invocations de fonctions qui dĂ©passent ce niveau d’imbrication forceront la commande actuelle Ă  abandonner.

GLOBIGNORE

Une liste de motifs sĂ©parĂ©s par des deux-points « : », dĂ©finissant l’ensemble des noms de fichier Ă  ignorer lors du dĂ©veloppement des chemins. Si un nom de fichier correspondant Ă  un des motif de dĂ©veloppement des chemins correspond Ă©galement Ă  un des motifs dans GLOBIGNORE , il est supprimĂ© de la liste des correspondances.

HISTCONTROL

Une liste de valeurs, sĂ©parĂ©es par des deux-points « : », commandant la façon dont les commandes sont sauvegardĂ©es dans la file d’historique. Si la liste des valeurs contient la valeur ignorespace , les lignes commençant par une espace ne sont pas sauvegardĂ©es dans la file d’historique. La valeur ignoredups conduit Ă  ne pas sauvegarder une ligne correspondant exactement Ă  la ligne de commande prĂ©cĂ©dente. La prĂ©sence de ignoreboth est un condensĂ© pour ignorespace et ignoredups . La valeur erasedups conduit Ă  retirer de la file d’historique toutes les lignes prĂ©cĂ©dant la ligne actuelle et lui correspondant avant que cette ligne y soit sauvegardĂ©e. Toute valeur qui ne fait pas partie de la liste ci-dessus est ignorĂ©e. Si HISTCONTROL est inexistante ou si elle ne contient pas une valeur correcte, toutes les lignes lues par l’analyseur de l’interprĂ©teur seront sauvegardĂ©es dans la file d’historique, selon la valeur de HISTIGNORE . La seconde ligne et les suivantes d’une commande multiligne ne sont pas testĂ©es et sont ajoutĂ©es dans l’historique indĂ©pendamment de la valeur de HISTCONTROL .

HISTFILE

Le nom du fichier dans lequel l’historique des commandes est sauvegardĂ© (consultez HISTORIQUE ci-dessous). Par dĂ©faut, il s’agit de ˜/.bash_history . Si inexistante, l’historique des commandes n’est pas sauvegardĂ© lorsqu’un interprĂ©teur se termine.

HISTFILESIZE

Le nombre maximal de lignes contenues dans le fichier d’historique. Quand cette variable contient une valeur, le fichier d’historique est tronquĂ©, si besoin, pour ne pas contenir plus que ce nombre de lignes en enlevant les entrĂ©es les plus anciennes. Ce fichier est aussi tronquĂ© Ă  cette taille aprĂšs son Ă©criture quand un interprĂ©teur se termine. Si la valeur est 0 , le fichier d’historique est tronquĂ© Ă  une taille nulle. Les valeurs non numĂ©riques ou nĂ©gatives empĂȘchent la troncature. L’interprĂ©teur dĂ©finit la valeur par dĂ©faut Ă  la valeur de HISTSIZE aprĂšs avoir lu tous les fichiers d’initialisation.

HISTIGNORE

Une liste de motifs, sĂ©parĂ©s par des deux-points « : », dĂ©terminant quelles lignes de commande devraient ĂȘtre sauvegardĂ©es dans la file d’historique. Chaque motif est accrochĂ© au dĂ©but de la ligne et doit correspondre Ă  celle-ci complĂštement (aucun ajout de « * » implicite). Chaque motif est comparĂ© Ă  chaque ligne aprĂšs application des vĂ©rifications de HISTCONTROL . En plus des motifs gĂ©nĂ©riques usuels de l’interprĂ©teur, « & » correspond Ă  la ligne prĂ©cĂ©dente de l’historique. « & » peut ĂȘtre protĂ©gĂ©e par une contre-oblique ; la contre-oblique est supprimĂ©e avant de tenter une comparaison. La seconde ligne et les suivantes d’une commande composĂ©e multiligne ne sont pas testĂ©es et sont ajoutĂ©es dans l’historique quelque soit la valeur de HISTIGNORE . La correspondance de motif respecte la configuration de l’option d’interprĂ©teur extglob .

HISTSIZE

Le nombre de commandes Ă  mĂ©moriser dans l’historique (consultez HISTORIQUE ci-dessous). Si la valeur est 0 , les commandes ne sont pas sauvegardĂ©es dans la liste d’historique. Les valeurs nĂ©gatives permettent de sauvegarder toutes les commandes dans la liste d’historique (sans limite). L’interprĂ©teur dĂ©finit la valeur par dĂ©faut Ă  500 aprĂšs avoir lu tous les fichiers d’initialisation.

HISTTIMEFORMAT

Si cette variable existe et n’est pas NULL, sa valeur est utilisĂ©e comme une chaĂźne de caractĂšres par strftime (3) afin d’imprimer l’horodatage associĂ© Ă  chaque Ă©lĂ©ment de l’historique affichĂ© par la commande interne history . Si cette variable existe, les horodatages sont Ă©crits dans le fichier d’historique afin d’ĂȘtre conservĂ©s au fur et Ă  mesure des sessions de l’interprĂ©teur. Cela utilise le caractĂšre de commentaire d’historique pour distinguer l’horodatage des autres lignes de l’historique.

HOME

Le rĂ©pertoire d’accueil de l’utilisateur actuel ; l’argument par dĂ©faut de la commande interne cd . La valeur de cette variable est aussi utilisĂ©e lors du dĂ©veloppement du tilde.

HOSTFILE

Contient le nom d’un fichier ayant le mĂȘme format /etc/hosts qui devra ĂȘtre lu lorsque l’interprĂ©teur aura besoin de complĂ©ter un nom de machine. La liste des complĂštements possibles de noms de machine peut ĂȘtre changĂ©e pendant l’exĂ©cution de l’interprĂ©teur ; Ă  la tentative de complĂštement de nom de machine suivant le changement de valeur, bash ajoute le contenu du nouveau fichier Ă  la liste existante. Si HOSTFILE existe mais est vide, ou dĂ©signe un fichier non accessible en lecture, bash essaie de lire /etc/hosts pour obtenir la liste des complĂštements de noms de machine possibles. Lorsque HOSTFILE est dĂ©truite, la liste des noms de machine est effacĂ©e.

IFS

Le séparateur de champs interne (« Internal Field Separator ») qui est utilisé pour le découpage en mots aprÚs les développements et pour découper les lignes en mots avec la commande interne read . La valeur par défaut est « <espace><tab><changement_de_ligne> ».

IGNOREEOF

Commande le comportement d’un interprĂ©teur interactif Ă  la rĂ©ception d’un caractĂšre EOF (fin de fichier) comme unique saisie. Si elle existe, la valeur est le nombre de caractĂšres EOF consĂ©cutifs qui doivent ĂȘtre tapĂ©s comme premiers caractĂšres sur une ligne de saisie avant que bash ne termine. Si la variable existe mais que sa valeur n’est pas numĂ©rique ou si elle n’a pas de valeur, la valeur par dĂ©faut est 10. Si elle n’existe pas, EOF signifie la fin de la saisie pour l’interprĂ©teur.

INPUTRC

Le nom du fichier d’initialisation pour readline , prioritaire sur le fichier par dĂ©faut de ˜/.inputrc (consultez READLINE ci-dessous).

INSIDE_EMACS

Si cette variable apparaĂźt dans l’environnement quand le script dĂ©marre, bash considĂšre qu’il s’exĂ©cute dans un tampon d’interprĂ©teur d’Emacs et peut dĂ©sactiver l’édition de ligne, suivant la valeur de TERM .

LANG

Utilisée pour déterminer le paramÚtre linguistique régional pour toute catégorie non spécifiquement sélectionnée par une variable commençant par LC_ .

LC_ALL

Cette variable surpasse LANG et toute autre variable LC_ indiquant une catégorie de paramÚtres linguistiques régionaux.

LC_COLLATE

Cette variable dĂ©termine l’ordre de collation utilisĂ© pour trier les rĂ©sultats du dĂ©veloppement des chemins et dĂ©termine le comportement des expressions d’intervalle, des classes d’équivalences et des suites de collations dans le dĂ©veloppement des chemins et la correspondance de motifs.

LC_CTYPE

Cette variable dĂ©termine l’interprĂ©tation des caractĂšres et le comportement des classes de caractĂšres lors du dĂ©veloppement des chemins et de la recherche de correspondances de motifs.

LC_MESSAGES

Cette variable dĂ©termine le paramĂštre linguistique rĂ©gional utilisĂ© pour traduire les chaĂźnes entre guillemets doubles prĂ©cĂ©dĂ©es d’un $ .

LC_NUMERIC

Cette variable détermine le paramÚtre linguistique régional utilisé pour formater les nombres.

LC_TIME

Cette variable détermine le paramÚtre linguistique régional utilisé pour les données et le temps.

LINES

UtilisĂ©e par la commande composĂ©e select pour dĂ©terminer la taille des colonnes lors de l’affichage des listes de sĂ©lection. Automatiquement configurĂ©e si l’option checkwinsize est activĂ©e ou dans un interprĂ©teur interactif Ă  la rĂ©ception d’un signal SIGWINCH .

MAIL

Si ce paramĂštre correspond Ă  un nom de fichier ou de rĂ©pertoire et si la variable MAILPATH est inexistante, bash informe l’utilisateur de l’arrivĂ©e de messages dans le fichier indiquĂ© ou le rĂ©pertoire au format Maildir.

MAILCHECK

Indique la durĂ©e (en seconde) au bout de laquelle bash vĂ©rifie si un nouveau message est arrivĂ©. La valeur par dĂ©faut est 60 secondes. Lorsque le dĂ©lai est Ă©coulĂ©, l’interprĂ©teur vĂ©rifiera la prĂ©sence d’un courrier Ă©lectronique avant d’afficher son invite de base. Si cette variable est inexistante, ou contient une valeur strictement nĂ©gative, l’interprĂ©teur dĂ©sactive la vĂ©rification du courrier.

MAILPATH

Une liste de noms de fichiers sĂ©parĂ©s par des deux-points « : », dans lesquels on vĂ©rifiera l’arrivĂ©e de courrier. Le nom d’un fichier peut ĂȘtre suivi d’un point d’interrogation « ? », puis d’une chaĂźne de caractĂšres indiquant le message Ă  afficher en cas de courrier. Dans cette chaĂźne, le paramĂštre $_ correspond au nom du fichier de courrier actuel. Exemple :
MAILPATH
='/usr/spool/mail/bfox?"Vous avez du courrier":˜/shell-mail?"$_ a du courrier !"'
Bash
peut ĂȘtre configurĂ©e pour fournir une valeur par dĂ©faut pour cette variable (il n’y a pas de valeur par dĂ©faut), mais l’emplacement du fichier de boĂźte Ă  lettres dĂ©pend du systĂšme (par exemple /var/mail/ $USER ).

OPTERR

Si configurĂ©e Ă  la valeur 1 , bash affiche les messages d’erreurs engendrĂ©s par la commande interne getopts (consultez COMMANDES INTERNES DE L’INTERPRÉTEUR ci-dessous). OPTERR est initialisĂ©e avec la valeur 1 Ă  chaque appel de l’interprĂ©teur ou au lancement d’un script.

PATH

Le chemin de recherche des commandes Ă  exĂ©cuter. Il s’agit d’une liste de rĂ©pertoires, sĂ©parĂ©s par des deux-points « : » dans lesquels l’interprĂ©teur recherche les commandes (consultez EXÉCUTION DES COMMANDES ci-dessous). Un nom de rĂ©pertoire de taille nulle (NULL) dans la valeur de PATH dĂ©signe le rĂ©pertoire actuel. Un rĂ©pertoire NULL peut apparaĂźtre comme deux deux-points consĂ©cutifs ou comme des deux-points en dĂ©but ou en fin. Le chemin par dĂ©faut dĂ©pend du systĂšme et est choisi par l’administrateur installant bash . Une valeur commune est ‘‘/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin: /sbin’’.

POSIXLY_CORRECT

Si cette variable existe dans l’environnement lorsque bash dĂ©marre, l’interprĂ©teur passe en mode POSIX avant de lire les fichiers d’initialisation comme si l’option --posix avait Ă©tĂ© fournie. Si elle est créée pendant que l’interprĂ©teur est en cours d’exĂ©cution, bash active le mode POSIX comme si la commande set -o posix a Ă©tĂ© exĂ©cutĂ©e. Quand l’interprĂ©teur passe en mode POSIX , il configure cette variable si elle ne l’a pas dĂ©jĂ  Ă©tĂ©.

PROMPT_COMMAND

Si cette variable existe et est un tableau, la valeur de chaque Ă©lĂ©ment existant est exĂ©cutĂ©e comme commande prĂ©alablement Ă  l’affichage de chaque invite de base. Si elle existe mais n’est pas une variable de type tableau, sa valeur est utilisĂ©e comme commande Ă  exĂ©cuter Ă  la place.

PROMPT_DIRTRIM

Si elle contient un nombre supĂ©rieur Ă  zĂ©ro, cette valeur est utilisĂ©e comme nombre de rĂ©pertoires finaux Ă  conserver lors du dĂ©veloppement des protections de chaĂźne d’invite \w et \W (consultez INVITES ci-dessous). Les caractĂšres supprimĂ©s sont remplacĂ©s par une ellipse.

PS0

La valeur de ce paramĂštre est dĂ©veloppĂ©e (consultez INVITES ci-dessous) puis affichĂ©e par les interprĂ©teurs interactifs aprĂšs la lecture d’une commande et avant son exĂ©cution.

PS1

La valeur de ce paramĂštre est dĂ©veloppĂ©e puis utilisĂ©e comme chaĂźne d’invite de base (consultez INVITES ci-dessous). La valeur par dĂ©faut est « \s-\v\$ ».

PS2

La valeur de ce paramĂštre est dĂ©veloppĂ©e comme PS1 puis utilisĂ©e comme chaĂźne d’invite secondaire. La valeur par dĂ©faut est « > ».

PS3

La valeur de ce paramĂštre est utilisĂ©e comme invite de la commande select (consultez GRAMMAIRE DE L’INTERPRÉTEUR ci-dessus).

PS4

La valeur de ce paramĂštre est dĂ©veloppĂ©e comme PS1 puis affichĂ©e avant chaque commande affichĂ©e par bash lors d’un suivi d’exĂ©cution. Le premier caractĂšre de PS4 est rĂ©pĂ©tĂ© autant de fois que nĂ©cessaire pour indiquer le niveau d’imbrication. La valeur par dĂ©faut est « + ».

SHELL

Cette variable dĂ©veloppe le chemin d’accĂšs complet Ă  l’interprĂ©teur de commandes. Si elle est inexistante au dĂ©marrage de l’interprĂ©teur, bash lui affecte le chemin d’accĂšs complet Ă  l’interprĂ©teur de commandes de connexion de l’utilisateur actuel.

TIMEFORMAT

La valeur de ce paramĂštre est utilisĂ©e en tant que chaĂźne de format indiquant comment les informations de paramĂ©trage doivent ĂȘtre affichĂ©es pour les pipelines prĂ©cĂ©dĂ©s du mot rĂ©servĂ© time . Le caractĂšre % introduit une suite de caractĂšres de protection qui est dĂ©veloppĂ©e en valeur de temps ou autre information. Les suites de caractĂšres de protection et leurs significations sont les suivantes ; les crochets marquent les parties facultatives.

%%

Un % seul (non interprété).

% [ p ][ l ] R

Le temps écoulé en seconde.

% [ p ][ l ] U

Le temps processeur écoulé en mode utilisateur en seconde.

% [ p ][ l ] S

Le temps processeur écoulé en mode systÚme en seconde.

%P

Le pourcentage de temps processeur utilisé calculé avec (%U + %S) / %R.

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

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

Si cette variable n’existe pas, bash agit comme si elle avait la valeur $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' . Si la valeur est NULL, aucune information de chronomĂ©trage n’est affichĂ©e. Un caractĂšre final de changement de ligne est ajoutĂ© quand la chaĂźne de format est affichĂ©e.

TMOUT

Si configurĂ©e en valeur strictement positive, TMOUT est traitĂ©e comme le dĂ©lai par dĂ©faut pour la commande interne read . La commande select se termine s’il n’y a pas de saisie au bout de TMOUT secondes lorsque l’entrĂ©e vient d’un terminal. Dans un interprĂ©teur interactif, la valeur est interprĂ©tĂ©e comme une durĂ©e en seconde Ă  attendre une ligne de saisie aprĂšs avoir affichĂ© l’invite de base. Bash se termine aprĂšs avoir attendu pendant ce temps en seconde si aucune saisie de ligne complĂšte n’est arrivĂ©e.

TMPDIR

Si existante, bash utilise sa valeur comme nom de rĂ©pertoire dans lequel bash crĂ©e les fichiers temporaires nĂ©cessaires au fonctionnement de l’interprĂ©teur.

auto_resume

Cette variable commande le comportement de l’interprĂ©teur vis-Ă -vis de l’utilisateur et du contrĂŽle des tĂąches. Si cette variable existe, les commandes simples constituĂ©es d’un seul mot, sans redirection, sont considĂ©rĂ©es comme de possibles relances de tĂąches suspendues. Aucune ambiguĂŻtĂ© n’est possible, si plusieurs tĂąches commencent par la chaĂźne saisie, la tĂąche Ă  laquelle il a Ă©tĂ© accĂ©dĂ© le plus rĂ©cemment est sĂ©lectionnĂ©e. Le nom d’une tĂąche suspendue, dans ce contexte, est la ligne de commande utilisĂ©e pour la lancer. Si configurĂ©e Ă  la valeur exact , la chaĂźne fournie doit correspondre exactement au nom d’une tĂąche suspendue ; si configurĂ©e Ă  substring , la chaĂźne fournie doit correspondre Ă  une sous-chaĂźne du nom de la tĂąche suspendue. La valeur substring donne une fonctionnalitĂ© analogue Ă  l’identificateur de tĂąche %? (consultez CONTRÔLE DES TÂCHES ci-dessous). Si configurĂ©e Ă  toute autre valeur, la chaĂźne fournie doit ĂȘtre le prĂ©fixe du nom d’une tĂąche suspendue ; cela fournit une fonctionnalitĂ© analogue Ă  l’identificateur de tĂąche % string .

histchars

Les deux ou trois caractĂšres commandant le dĂ©veloppement de l’historique et le dĂ©coupage en lexĂšmes (consultez DÉVELOPPEMENT DE L’HISTORIQUE ci-dessous). Le premier caractĂšre est le caractĂšre de dĂ©veloppement de l’historique , celui qui indique le dĂ©but d’un dĂ©veloppement d’historique (normalement « ! »). Le second caractĂšre est celui de substitution rapide , utilisĂ© comme raccourci pour relancer la commande prĂ©cĂ©dente, en modifiant une partie de la chaĂźne (par dĂ©faut « ˆ »). Le troisiĂšme caractĂšre facultatif est celui qui indique, lorsqu’on le trouve en dĂ©but de mot que le reste de la ligne est un commentaire (normalement « # »). Ce caractĂšre de commentaire empĂȘche le dĂ©veloppement de l’historique pour tous les mots restants sur la ligne. Il ne conduit pas nĂ©cessairement l’analyseur de l’interprĂ©teur Ă  considĂ©rer le reste de la ligne comme un commentaire.

Tableaux

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

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

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

Des attributs peuvent ĂȘtre indiquĂ©s pour une variable tableau en utilisant les commandes internes declare et readonly . Les attributs s’appliquent Ă  tous les Ă©lĂ©ments d’un tableau.

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

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

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

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

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

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

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

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

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

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

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

DÉVELOPPEMENTS

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

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

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

AprĂšs la rĂ©alisation de ces dĂ©veloppements, les caractĂšres de protection prĂ©sents dans le mot original sont supprimĂ©s Ă  moins qu’ils n’aient Ă©tĂ© protĂ©gĂ©s eux-mĂȘmes ( suppression des protections )

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

Développement des accolades

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

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

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

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

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

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

mkdir /usr/local/src/bash/{old,new,dist,bugs}

ou

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

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

Développement du tilde

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

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

Si l’identifiant de connexion est incorrect ou si le dĂ©veloppement du tilde Ă©choue, le mot est inchangĂ©.

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

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

Développement des paramÚtres

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

Lorsque les accolades sont utilisĂ©es, l’accolade de fin correspondante est le premier caractĂšre « } » ni protĂ©gĂ© par une contre-oblique, ni inclus dans une chaĂźne protĂ©gĂ©e, un dĂ©veloppement arithmĂ©tique, une substitution de commande ou un dĂ©veloppement des paramĂštres.
${
paramĂštre }

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

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

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

Quand il n’effectue pas de dĂ©veloppement de sous-chaĂźne, en utilisant les formes documentĂ©es ci-dessous (par exemple :- ), bash teste si le paramĂštre est inexistant ou NULL. L’absence de deux-points induit un test sur la seule inexistence du paramĂštre.
${
paramĂštre :- mot }

Utilisation de valeur par dĂ©faut . Si le paramĂštre est inexistant ou NULL, le dĂ©veloppement du mot est substituĂ©. Sinon, c’est la valeur du paramĂštre qui est substituĂ©e.

${ paramĂštre := mot }

Affectation de valeur par dĂ©faut . Si le paramĂštre est inexistant ou NULL, le dĂ©veloppement du mot lui est affectĂ©. La valeur du paramĂštre est alors substituĂ©. Les paramĂštres positionnels et spĂ©ciaux ne peuvent pas ĂȘtre affectĂ©s de cette façon.

${ paramĂštre :? mot }

Affichage d’erreur si NULL ou inexistant . Si le paramĂštre est inexistant ou NULL, le dĂ©veloppement du mot (ou un message appropriĂ© si aucun mot n’est fourni) est affichĂ© sur la sortie d’erreur standard et l’interprĂ©teur termine, s’il n’est pas interactif. Sinon, la valeur du paramĂštre est substituĂ©e.

${ paramĂštre :+ mot }

Utilisation de valeur alternative . Si le paramĂštre est NULL ou inexistant, rien n’est substituĂ©. Sinon le dĂ©veloppement du mot est substituĂ©.

${ paramÚtre : début }
${
paramÚtre : début : longueur }

DĂ©veloppement des sous-chaĂźnes . Se dĂ©veloppe pour fournir la sous-chaĂźne de longueur indiquĂ©e (en caractĂšre) commençant au dĂ©but . Si le paramĂštre est @ ou * , un tableau indicĂ© par @ ou * , ou un nom de tableau associatif, le rĂ©sultat diffĂšre comme dĂ©crit ci-dessous. Si la longueur est omise, fournit la sous-chaĂźne commençant au caractĂšre indiquĂ© par dĂ©but et s’étendant jusqu’à la fin de la valeur. La longueur et le dĂ©but sont des expressions arithmĂ©tiques (consultez ÉVALUATION ARITHMÉTIQUE ci-dessous).

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

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

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

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

L’indexation des sous-chaĂźnes commence Ă  zĂ©ro, sauf pour les paramĂštres positionnels pour lesquels l’indexation commence Ă  1 par dĂ©faut. Si dĂ©but est 0 , et que les paramĂštres positionnels sont utilisĂ©s, la liste est prĂ©fixĂ©e par $0 .

${! préfixe *}
${!
préfixe @}

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

${! nom [ @ ]}
${!
nom [ * ]}

Liste des clefs du tableau . Si nom est une variable de type tableau, elle se dĂ©veloppe en liste des indices (clefs) du tableau affectĂ© Ă  nom . Si nom n’est pas un tableau, se dĂ©veloppe en 0 si nom existe et en NULL sinon. Quand @ est utilisĂ© et que le dĂ©veloppement apparaĂźt entre guillemets doubles, chaque clef se dĂ©veloppe en un mot sĂ©parĂ©.

${# paramĂštre }

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

${ paramĂštre # mot }
${
paramĂštre ## mot }

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

${ paramĂštre % mot }
${
paramĂštre %% mot }

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

${ paramĂštre / motif / chaĂźne }
${ paramĂštre // motif / chaĂźne }
${ paramĂštre /# motif / chaĂźne }
${ paramĂštre /% motif / chaĂźne }

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

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

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

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

${ paramùtre ˆ motif }
${
paramùtre ˆˆ motif }
${
paramĂštre , motif }
${
paramĂštre ,, motif }

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

${ paramÚtre @ opérateur }

Transformation de paramĂštre . Le dĂ©veloppement est soit une transformation de la valeur du paramĂštre ou des informations sur paramĂštre lui-mĂȘme, selon la valeur de opĂ©rateur . Chaque opĂ©rateur est une lettre unique :

U

Le dĂ©veloppement est une chaĂźne qui est la valeur de l’ argument avec des caractĂšres alphabĂ©tiques en minuscule convertis en majuscule.

u

Le dĂ©veloppement est une chaĂźne qui est la valeur de l’ argument avec son premier caractĂšre converti en majuscule, si c’est un caractĂšre alphabĂ©tique.

L

Le dĂ©veloppement est une chaĂźne qui est la valeur de l’ argument avec les caractĂšres alphabĂ©tiques en majuscule convertis en minuscule.

Q

Le dĂ©veloppement est une chaĂźne qui est la valeur de l’ argument protĂ©gĂ©e dans un format rĂ©utilisable en entrĂ©e de l’interprĂ©teur.

E

Le développement est une chaßne qui est la valeur du paramÚtre avec des suites de caractÚres de protection par contre-oblique développée comme avec le mécanisme de protection $'...' .

P

Le dĂ©veloppement est une chaĂźne qui est le rĂ©sultat du dĂ©veloppement de lavaleur du paramĂštre comme s’il s’agissait d’une chaĂźne d’invite (consultez INVITES ci-dessous).

A

Le dĂ©veloppement est une chaĂźne sous la forme d’une affectation ou d’une commande declare qui, lorsqu’elle est Ă©valuĂ©e, recrĂ©era paramĂštre avec sa valeur et ses attributs.

K

Produit une version potentiellement protĂ©gĂ©e de la valeur de l’ argument , sauf qu’il affiche les valeurs des tableaux indicĂ©s et associatifs comme une sĂ©quence de paires clĂ©/valeur protĂ©gĂ©es (consultez Tableaux ci-dessus).

a

Le dĂ©veloppement est une chaĂźne consistant en valeurs d’indicateur reprĂ©sentant les attributs de paramĂštre.

k

Comme la transformation K, mais développe les clés et les valeurs des tableaux indicés et associatifs pour séparer les mots aprÚs le découpage en mots.

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

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

Substitution de commande

La substitution de commande permet de remplacer le nom d’une commande par son rĂ©sultat. Il en existe deux formes :

$( commande )

ou

` commande `

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

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

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

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

Développement arithmétique

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

$(( expression ))

L’ancien format $[ expression ] est obsolĂšte et sera supprimĂ© dans les prochaines versions de bash.

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

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

Substitution de processus

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

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

Découpage en mots

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

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

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

Remarquez que si aucun dĂ©veloppement n’a lieu, le dĂ©coupage en mots n’est pas effectuĂ©.

Développement des chemins

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

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

Motifs génériques

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

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

*

Correspond Ă  n’importe quelle chaĂźne, y compris la chaĂźne NULL. Si l’option globstar de l’interprĂ©teur est activĂ©e, et que * est utilisĂ© dans un contexte de dĂ©veloppement des chemins, deux * adjacents sont utilisĂ©s pour un seul motif correspondant Ă  tous les fichiers et zĂ©ro ou plus de rĂ©pertoires et sous-rĂ©pertoires. Lorsqu’il sont suivis de / , deux * adjacents correspondront seulement aux rĂ©pertoires et sous-rĂ©pertoires.

?

Correspond à n’importe quel caractùre.

[...]

Correspond Ă  tout caractĂšre entre les crochets. Un couple de caractĂšres sĂ©parĂ©s par un trait d’union indique une expression d’intervalle ; tout caractĂšre qui correspond Ă  n’importe quel caractĂšre situĂ© entre les deux bornes incluses, en utilisant les suites de collations et le jeu de caractĂšres des paramĂštres linguistiques rĂ©gionaux actuels, est capturĂ©. Si le premier caractĂšre suivant le [ est un ! ou un ˆ alors la correspondance se fait sur tous les caractĂšres hors intervalle. L’ordre de tri des caractĂšres dans les expressions d’intervalle et les caractĂšres inclus dans l’intervalle sont dĂ©terminĂ©s par les paramĂštres linguistiques rĂ©gionaux actuels et par les valeurs des variables de l’interprĂ©teur LC_COLLATE et LC_ALL si existantes. Pour obtenir l’interprĂ©tation traditionnelle des expressions d’intervalle, oĂč [a-d] est Ă©quivalent Ă  [abcd] , configurez la valeur de la variable d’interprĂ©teur LC_ALL Ă  C ou activez l’option d’interprĂ©teur globasciiranges . Un - peut faire partie du motif de correspondance Ă  condition d’ĂȘtre le premier ou le dernier caractĂšre de l’ensemble. Un ] peut faire partie du motif de correspondance Ă  condition d’ĂȘtre le premier caractĂšre de l’ensemble.

Entre [ et ] , on peut indiquer une classe de caractĂšre en utilisant la syntaxe [: classe :] , oĂč classe est l’une des classes suivantes, dĂ©finies dans la norme POSIX :
alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit

Une classe correspond Ă  n’importe quel caractĂšre qui s’y trouve. La classe de caractĂšres word correspond aux lettres, aux chiffres et au caractĂšre soulignĂ© « _ ».

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

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

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

?( liste-motif )

Correspond à zéro ou une occurrence des motifs indiqués.

*( liste-motif )

Correspond à zéro ou plusieurs occurrences des motifs indiqués.

+( liste-motif )

Correspond à une ou plusieurs occurrences des motifs indiqués.

@( liste-motif )

Correspond à une occurrence exactement des motifs indiqués.

!( liste-motif )

Correspond Ă  tout sauf l’un des motifs indiquĂ©s.

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

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

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

Suppression des protections

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

REDIRECTIONS

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

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

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

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

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

ls > liste_répertoires 2 >& 1

redirige Ă  la fois la sortie standard et la sortie d’erreur standard vers le fichier liste_rĂ©pertoires , alors que la commande

ls 2 >& 1 > liste_répertoires

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

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

/dev/fd/ df

Si df est un entier correct, le descripteur de fichier df est dupliqué.

/dev/stdin

Le descripteur de fichier 0 est dupliqué.

/dev/stdout

Le descripteur de fichier 1 est dupliqué.

/dev/stderr

Le descripteur de fichier 2 est dupliqué.

/dev/tcp/ hĂŽte / port

Si hĂŽte est un nom de machine ou une adresse Internet corrects et si port est un numĂ©ro de port entier ou un nom de service, bash tentera d’ouvrir le socket TCP correspondant.

/dev/udp/ hĂŽte / port

Si hĂŽte est un nom de machine ou une adresse Internet corrects et si port est un numĂ©ro de port entier ou un nom de service, bash tentera d’ouvrir le socket UDP correspondant.

Un Ă©chec Ă  l’ouverture ou Ă  la crĂ©ation de fichier conduit Ă  l’échec de la redirection.

Les redirections utilisant des descripteurs de fichier supĂ©rieurs Ă  9 doivent ĂȘtre utilisĂ©es avec prĂ©caution, car des conflits peuvent survenir avec les descripteurs de fichier utilisĂ©s en interne par l’interprĂ©teur.

Notez que la commande interne exec peut faire appliquer les redirections Ă  l’interprĂ©teur de commande en cours.

Redirection d’entrĂ©e

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

Le format gĂ©nĂ©ral des redirections d’entrĂ©e est :

[ n ] < mot

Redirection de sortie

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

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

[ n ] > mot

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

Ajout d’une sortie redirigĂ©e

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

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

[ n ] >> mot

Redirection de la sortie standard et de la sortie d’erreur standard

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

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

&> mot

et

>& mot

La premiĂšre des deux formes est prĂ©fĂ©rĂ©e. C’est sĂ©mantiquement Ă©quivalent Ă 

> mot 2 >& 1

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

Ajout de la sortie standard et de la sortie d’erreur standard

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

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

&>> mot

C’est sĂ©mantiquement Ă©quivalent Ă 

>> mot 2 >& 1

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

Document en ligne

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

Le format des documents en ligne est le suivant :

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

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

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

ChaĂźnes en ligne

Une variante aux documents en ligne, le format est :

[ n ] <<< mot

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

Dédoublement de descripteurs de fichier

L’opĂ©rateur de redirection

[ n ] <& mot

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

L’opĂ©rateur

[ n ] >& mot

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

Déplacement de descripteurs de fichier

L’opĂ©rateur de redirection

[ n ] <& chiffre -

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

De la mĂȘme façon, l’opĂ©rateur de redirection

[ n ] >& chiffre -

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

Ouverture en Lecture/Écriture d’un descripteur de fichier

L’opĂ©rateur de redirection

[ n ] <> mot

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

ALIAS

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

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

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

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

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

Les alias sont surpassĂ©s par les fonctions de l’interprĂ©teur dans la plupart des situations.

FONCTIONS

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

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

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

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

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

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

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

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

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

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

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

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

ÉVALUATION ARITHMÉTIQUE

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

post-incrément et post-décrément de variables

- +

moins et plus unaires

++ id -- id

préincrément et prédécrément de variables

! ˜

négations logique et binaire

**

exponentiation

* / %

multiplication, division, reste

+ -

addition, soustraction

<< >>

décalage arithmétique à gauche et à droite

<= >= < >

comparaisons

== !=

égalité et différence

&

ET binaire

ˆ

OU exclusif binaire

|

OU binaire

&&

ET logique

||

OU logique

expr ? expr : expr

opérateur conditionnel

= *= /= %= += -= <<= >>= &= ˆ= |=

affectations

expr1 , expr2

virgule

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

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

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

CONDITIONS

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

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

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

Lorsqu’ils sont utilisĂ©s avec [[ , les opĂ©rateurs < et > ordonnent d’un point de vue lexicographique en utilisant les paramĂštres linguistiques rĂ©gionaux actuels. La commande test trie en utilisant l’ordre ASCII.
-a
fichier

Vrai si le fichier existe.

-b fichier

Vrai si le fichier existe et est un fichier spécial bloc.

-c fichier

Vrai si le fichier existe et est un fichier spécial caractÚre.

-d fichier

Vrai si le fichier existe et est un répertoire.

-e fichier

Vrai si le fichier existe.

-f fichier

Vrai si le fichier existe et est un fichier normal.

-g fichier

Vrai si le fichier existe et a son bit Set-GID positionné.

-h fichier

Vrai si le fichier existe et est un lien symbolique.

-k fichier

Vrai si le fichier existe et a son bit « sticky » positionné.

-p fichier

Vrai si le fichier existe et est un tube nommé (FIFO).

-r fichier

Vrai si le fichier existe et est accessible en lecture.

-s fichier

Vrai si le fichier existe et a une taille strictement positive.

-t df

Vrai si le descripteur de fichier df est ouvert et se rapporte Ă  un terminal.

-u fichier

Vrai si le fichier existe et a son bit Set-UID positionné.

-w fichier

Vrai si le fichier existe et est accessible en écriture.

-x fichier

Vrai si le fichier existe et est exécutable.

-G fichier

Vrai si le fichier existe et appartient au GID effectif du groupe.

-L fichier

Vrai si le fichier existe et est un lien symbolique.

-N fichier

Vrai si le fichier existe et a été modifié depuis sa derniÚre lecture.

-O fichier

Vrai si le fichier existe et appartient à l’UID effectif de l’utilisateur.

-S fichier

Vrai si le fichier existe et est un socket.

fichier_1 -ef fichier_2

Vrai si le fichier_1 et le fichier_2 se rapportent au mĂȘme pĂ©riphĂ©rique et ont les mĂȘmes numĂ©ros d’inƓuds.

fichier_1 -nt fichier_2

Vrai si le fichier_1 est plus récent que le fichier_2 (selon les dates de derniÚre modification) ou si fichier_1 existe et non fichier_2 .

fichier_1 -ot fichier_2

Vrai si le fichier_1 est plus ancien que le fichier_2 ou si fichier_2 existe et non fichier_1 .

-o nom_opt

Vrai si l’option d’interprĂ©teur nom_opt est activĂ©e. Consulter la liste des options ci-dessous dans la description de l’option -o de la commande interne set .

-v nom_de_variable

Vrai si la variable nom_de_variable de l’interprĂ©teur est configurĂ©e (si une valeur lui a Ă©tĂ© assignĂ©e).

-R nom_de_variable

Vrai si la variable nom_de_variable de l’interprĂ©teur est configurĂ©e et est une rĂ©fĂ©rence de nom.

-z chaĂźne

Vrai si la longueur de la chaĂźne est nulle.

chaĂźne

-n chaĂźne

Vrai si la longueur de la chaĂźne est non nulle.

chaĂźne_1 == chaĂźne_2
chaĂźne_1
= chaĂźne_2

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

chaĂźne_1 != chaĂźne_2

Vrai si les deux chaßnes sont différentes.

chaĂźne_1 < chaĂźne_2

Vrai si chaüne_1 se trouve avant chaüne_2 dans l’ordre lexicographique.

chaĂźne_1 > chaĂźne_2

Vrai si chaüne_1 se trouve aprùs chaüne_2 dans l’ordre lexicographique.

arg1 OP arg2

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

DÉVELOPPEMENT DES COMMANDES SIMPLES

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

1.

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

2.

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

3.

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

4.

Le texte suivant le signe = de chaque affectation de variable est sujet au dĂ©veloppement du tilde, des paramĂštres, Ă  la substitution de commande, au dĂ©veloppement arithmĂ©tique et Ă  la suppression des protections avant d’ĂȘtre affectĂ© Ă  la variable.

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

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

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

EXÉCUTION DES COMMANDES

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

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

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

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

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

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

ENVIRONNEMENT D’EXÉCUTION DES COMMANDES

L’interprĂ©teur fournit un environnement d’exĂ©cution consistant en l’ensemble des Ă©lĂ©ments suivants :

-

les fichiers ouverts hĂ©ritĂ©s par l’interprĂ©teur Ă  son appel et modifiĂ©s par les redirections fournies Ă  la commande interne exec ;

-

le rĂ©pertoire de travail actuel comme configurĂ© par cd , pushd ou popd ou hĂ©ritĂ© par l’interprĂ©teur Ă  son appel ;

-

le masque de crĂ©ation de fichier comme configurĂ© par umask ou hĂ©ritĂ© du parent de l’interprĂ©teur ;

-

les captures actuelles configurées par trap ;

-

les paramĂštres de l’interprĂ©teur configurĂ©s par des affectations de variables, avec la commande interne set , ou hĂ©ritĂ©s de l’environnement du parent de l’interprĂ©teur ;

-

les fonctions de l’interprĂ©teur dĂ©finies lors de l’exĂ©cution ou hĂ©ritĂ©es de l’environnement du parent de l’interprĂ©teur ;

-

les options activĂ©es Ă  l’appel (par dĂ©faut ou avec les arguments de ligne de commande) ou par set ;

-

les options activées par shopt ;

-

les alias de l’interprĂ©teur dĂ©finies par la commande alias ;

-

les ID des divers processus, y compris ceux des tĂąches en arriĂšre-plan, la valeur de $$ et la valeur de PPID .

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

-

les fichiers ouverts de l’interprĂ©teur, ainsi que toutes modifications et ajouts prĂ©cisĂ©s par les redirections de la commande ;

-

le répertoire de travail actuel ;

-

le masque de création de fichiers ;

-

les variables et les fonctions de l’interprĂ©teur marquĂ©es pour l’exportation, ainsi que les variables exportĂ©es spĂ©cialement pour la commande ;

-

les captures interceptĂ©es par l’interprĂ©teur sont rĂ©initialisĂ©es aux valeurs hĂ©ritĂ©es de l’interprĂ©teur parent et les captures ignorĂ©es par l’interprĂ©teur restent ignorĂ©es.

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

Un sous-interprĂ©teur est une copie du processus de l’interprĂ©teur.

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

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

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

ENVIRONNEMENT

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

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

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

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

Quand bash appelle une commande externe, la variable _ est configurĂ©e en chemin d’accĂšs complet Ă  cette commande et elle est transmise dans l’environnement.

CODE DE RETOUR

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

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

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

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

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

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

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

SIGNAUX

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

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

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

Si l’option d’interprĂ©teur huponexit a Ă©tĂ© configurĂ©e avec la fonction shopt , bash envoie un signal SIGHUP Ă  toutes les tĂąches lorsqu’un interprĂ©teur de commandes de connexion interactif termine.

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

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

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

1.

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

2.

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

CONTRÔLE DES TÂCHES

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

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

[1] 25647

Cette ligne indique que la tĂąche est la tĂąche numĂ©ro 1 et que le PID du dernier processus dans le pipeline associĂ© Ă  cette tĂąche est 25647. Tous les processus d’un mĂȘme pipeline font partie de la mĂȘme tĂąche. Bash utilise la notion de tĂąche comme base du contrĂŽle des tĂąches.

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

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

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

Il suffit de nommer une tĂąche pour la ramener au premier plan : %1 est synonyme de « fg %1 » et ramĂšne la tĂąche 1 de l’arriĂšre-plan vers le premier plan. De mĂȘme, « %1 & » reprend la tĂąche 1 en arriĂšre-plan, de façon Ă©quivalente Ă  « bg %1 » .

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

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

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

INVITES

Quand il est exĂ©cutĂ© de façon interactive, bash affiche l’invite de base PS1 dĂšs qu’il est prĂȘt Ă  lire une commande et l’invite secondaire PS2 quand il a besoin de plus de saisies pour exĂ©cuter une commande. Bash affiche PS0 aprĂšs avoir lu une commande, mais avant de l’exĂ©cuter. Bash affiche PS4 comme dĂ©crit ci-dessus avant de tracer chaque commande quand l’option -x est activĂ©e. Bash permet de personnaliser ces chaĂźnes d’invite, en insĂ©rant un certain nombre de caractĂšres spĂ©ciaux protĂ©gĂ©s par des contre-obliques qui sont dĂ©codĂ©s comme suit :

\a

un caractùre ASCII d’alarme (07) ;

\d

la date au format « Jour_de_la_semaine Mois QuantiÚme » (par exemple : « Tue May 26 ») ;

\D{ format }

le format est passĂ© Ă  strftime (3) et le rĂ©sultat est insĂ©rĂ© dans la chaĂźne de l’invite ; un format vide implique une reprĂ©sentation du temps spĂ©cifique aux paramĂštres linguistiques rĂ©gionaux. Les accolades sont nĂ©cessaires ;

\e

un caractÚre de protection ASCII (033) ;

\h

le nom de la machine, jusqu’au premier point « . » ;

\H

le nom de la machine ;

\j

le nombre de tĂąches actuellement gĂ©rĂ©es par l’interprĂ©teur ;

\l

le nom de base du nom de pĂ©riphĂ©rique de terminal de l’interprĂ©teur ;

\n

changement de ligne ;

\r

retour chariot

\s

le nom de l’interprĂ©teur, c’est-Ă -dire le nom de base de $0 (la portion suivant la derniĂšre barre oblique) ;

\t

l’heure actuelle au format HH:MM:SS sur 24 heures ;

\T

l’heure actuelle au format HH:MM:SS sur 12 heures ;

\@

l’heure actuelle au format HH:MM sur 12 heures ;

\A

l’heure actuelle au format HH:MM sur 24 heures ;

\u

le nom de l’utilisateur ;

\v

la version de bash (par exemple, 2.00) ;

\V

le numéro de version complet (avec niveau de correctifs) de bash , (par exemple, 2.00.0) ;

\w

la valeur de la variable de l’interprĂ©teur ( $PWD ), avec $HOME abrĂ©gĂ© en tilde « ˜ » (utilise la valeur de la variable PROMPT_DIRTRIM ) ;

\W

le nom de base de $PWD , avec $HOME abrĂ©gĂ© en tilde (« ˜ ») ;

\!

le numĂ©ro d’historique de la commande ;

\#

le numéro de la commande ;

\$

# si l’UID effectif est 0 , $ sinon ;

\ nnn

le caractĂšre de code octal nnn ;

\\

une contre-oblique ;

\[

dĂ©bute une suite de caractĂšres non imprimables, qui peuvent ĂȘtre utilisĂ©s pour inclure une suite de caractĂšres de contrĂŽle du terminal dans l’interprĂ©teur ;

\]

finit une suite de caractĂšres non imprimables.

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

READLINE

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

Notation readline

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

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

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

Initialisation de readline

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

Les raccourcis clavier par dĂ©faut peuvent ĂȘtre modifiĂ©s par un fichier inputrc . D’autres programmes qui utilisent cette bibliothĂšque peuvent ajouter leurs propres commandes et raccourcis.

Par exemple, en plaçant

M-Control-u: universal-argument

ou

C-Meta-u: universal-argument

dans le fichier inputrc , on associera la suite de touches M-C-u Ă  la commande readline universal-argument .

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

En plus des noms de commandes, readline permet d’associer Ă  une touche une chaĂźne de caractĂšres qui sera insĂ©rĂ©e lorsque la touche est pressĂ©e (une macro ).

Raccourcis clavier readline

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

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

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

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

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

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

Dans cet exemple, C-u est Ă  nouveau associĂ© Ă  la fonction universal-argument , C-x C-r Ă  la fonction re-read-init-file et ESC [ 1 1 ˜ Ă  l’insertion du texte ‘‘Function Key 1’’.

Le jeu complet des suites de caractÚres de protection du style GNU Emacs est :

\C-

préfixe ContrÎle ;

\M-

préfixe Méta ;

\e

caractÚre de protection ;

\\

contre-oblique ;

\"

un guillemet " littéral ;

\'

un guillemet ' littéral.

En plus des suites de caractÚres de protection dans le style GNU Emacs, un second jeu de suites de caractÚres de protection par contre-obliques est disponible :

\a

alerte (alarme) ;

\b

espace arriĂšre

\d

delete

\f

saut de page (« form feed ») ;

\n

changement de ligne ;

\r

retour chariot

\t

tabulation horizontale

\v

tabulation verticale

\ nnn

le caractÚre 8 bits dont la valeur octale est nnn (un à trois chiffres) ;

\x HH

le caractÚre 8 bits dont la valeur hexadécimale est HH (un ou deux chiffres hexadécimaux) ;

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

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

Variables de readline

Readline dispose de variables permettant de personnaliser encore plus son comportement. Une variable peut ĂȘtre configurĂ©e dans le fichier inputrc avec une affectation de la forme

set nom_de_variable valeur

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

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

Une variable de chaĂźne qui contrĂŽle la couleur du texte et du fond lors de l’affichage du texte dans la zone active (consultez la description de enable-active-region ci-dessous). Cette chaĂźne ne doit pas occuper l’emplacement d’un caractĂšre physique quelconque sur l’affichage, aussi elle devrait consister uniquement en sĂ©quences d’échappement du terminal. Elle est envoyĂ©e au terminal avant l’affichage du texte dans la zone active. Cette variable est remise Ă  sa valeur par dĂ©faut chaque fois que le type de terminal change. La valeur par dĂ©faut est la chaĂźne qui place le terminal en mode standout tel qu’obtenu Ă  partir de la description terminfo du terminal. Cette valeur pourrait ĂȘtre par exemple "\e[01;33m".

active-region-end-color

Une variable de chaĂźne qui « annule » les effets de active-region-start-color et rĂ©tablit l’apparence « normale » de l’affichage du terminal aprĂšs l’affichage de texte dans la zone active. Cette chaĂźne ne doit pas occuper l’emplacement d’un caractĂšre physique quelconque sur l’affichage, aussi elle devrait consister uniquement en sĂ©quences d’échappement du terminal. Elle est envoyĂ©e au terminal aprĂšs l’affichage du texte dans la zone active. Cette variable est remise Ă  sa valeur par dĂ©faut chaque fois que le type de terminal change. La valeur par dĂ©faut est la chaĂźne qui rĂ©tablit le terminal Ă  partir du mode standout tel qu’obtenu Ă  partir de la description terminfo du terminal. Cette valeur pourrait ĂȘtre par exemple "\e[0m".

bell-style (audible)

Cette variable commande readline lorsqu’il faut dĂ©clencher l’alarme du terminal. Si configurĂ©e Ă  none , readline n’émet jamais d’alarme. Si configurĂ©e Ă  visible , readline utilise une alarme visuelle s’il y en a une disponible. Si configurĂ©e Ă  audible , readline essaie de faire sonner l’alarme du terminal.

bind-tty-special-chars (On)

Si configurĂ©e Ă  On , readline tente d’associer les caractĂšres de contrĂŽle traitĂ©s spĂ©cialement par le pilote de terminal du noyau Ă  leurs Ă©quivalents readline.

blink-matching-paren (Off)

Si configurĂ©e Ă  On , readline tente de dĂ©placer briĂšvement le curseur vers une parenthĂšse ouvrante lors de l’insertion d’une parenthĂšse fermante.

colored-completion-prefix (Off)

Si configurĂ©e Ă  On , lors du listage des complĂštements, readline affiche le prĂ©fixe commun du jeu des complĂštements possibles en utilisant une couleur diffĂ©rente. Les dĂ©finitions de couleur sont prises selon la valeur de la variable d’environnement LS_COLORS . S’il y a une dĂ©finition de couleur dans $LS_COLORS pour le suffixe personnalisĂ© « readline-colored-completion-prefix », readline utilise cette couleur pour le suffixe commun plutĂŽt que la valeur par dĂ©faut.

colored-stats (Off)

Si configurĂ©e Ă  On , readline affiche les complĂštements possibles en utilisant des couleurs diffĂ©rentes pour indiquer leur type de fichier. Les dĂ©finitions de couleur sont prises dans la valeur de la variable d’environnement LS_COLORS .

comment-begin (« # »)

Cette chaßne est insérée quand la commande readline insert-comment est exécutée. Cette commande est associée à M-# en mode Emacs et à # en mode de commande vi.

completion-display-width (-1)

Le nombre de colonnes d’écran utilisĂ©es pour afficher de possibles correspondances lors de la rĂ©alisation du complĂštement. La valeur est ignorĂ©e si elle est infĂ©rieure Ă  0 ou supĂ©rieure Ă  la largeur de l’écran du terminal. Une valeur de 0 fera que les correspondances seront affichĂ©es une par ligne. La valeur par dĂ©faut est -1 .

completion-ignore-case (Off)

Si configurée à On , readline effectue les correspondances et complÚtements de noms de fichiers sans tenir compte de la casse.

completion-map-case (Off)

Si configurĂ©e Ă  On et completion-ignore-case activĂ©e, readline traite les traits d’union ( - ) et les tirets bas ( _ ) comme Ă©quivalents lorsqu’elle rĂ©alise une recherche de correspondance et un complĂštement de nom de fichier insensibles Ă  la casse.

completion-prefix-display-length (0)

La longueur, en caractĂšres, du prĂ©fixe commun d’une liste de complĂštements possibles affichĂ© sans modification. Si configurĂ©e en valeur positive, les prĂ©fixes communs plus longs que cette valeur sont remplacĂ©s par une ellipse lors de l’affichage des complĂštements possibles.

completion-query-items (100)

Cela dĂ©termine quand l’utilisateur est interrogĂ© pour voir le nombre de complĂštements possibles produits par la commande possible-completions . Elle peut ĂȘtre configurĂ©e Ă  toute valeur entiĂšre positive. Si le nombre de complĂštements possibles est supĂ©rieur ou Ă©gal Ă  la valeur de cette variable, readline demandera Ă  l’utilisateur s’il veut ou non les voir ; sinon, ils sont simplement affichĂ©s sur le terminal. Une valeur zĂ©ro signifie que readline ne demandera jamais ; des valeurs nĂ©gatives sont traitĂ©es comme un zĂ©ro.

convert-meta (On)

Si configurĂ©e Ă  On , readline transformera les caractĂšres avec leur huitiĂšme bit rĂ©glĂ© Ă  une suite de caractĂšres ASCII en supprimant le huitiĂšme bit et en prĂ©fixant un caractĂšre de protection (en fait, en utilisant le caractĂšre de protection comme prĂ©fixe mĂ©ta ). La configuration par dĂ©faut est On , mais readline la fixe Ă  Off si le paramĂštre linguistique rĂ©gional contient des caractĂšres 8 bits. Cette variable dĂ©pend du paramĂštre linguistique rĂ©gional LC_CTYPE et peut ĂȘtre modifiĂ©e si le paramĂštre linguistique rĂ©gional est changĂ©.

disable-completion (Off)

Si configurĂ©e Ă  On , readline empĂȘchera le complĂštement des mots. Les caractĂšres de complĂštement seront insĂ©rĂ©s sur la ligne comme s’ils avaient Ă©tĂ© associĂ©s Ă  self-insert .

echo-control-characters (On)

Si configurĂ©e Ă  On , sur les systĂšmes d’exploitation le permettant, readline affiche un caractĂšre correspondant Ă  un signal provenant du clavier.

editing-mode (emacs)

Commande si readline doit dĂ©marrer avec des raccourcis clavier similaires Ă  Emacs ou Ă  vi . editing-mode peut ĂȘtre positionnĂ© soit Ă  emacs , soit Ă  vi .

emacs-mode-string (@)

Si la variable show-mode-in-prompt est activĂ©e, cette chaĂźne est affichĂ©e immĂ©diatement avant la derniĂšre ligne de la premiĂšre invite quand le mode Ă©dition d’Emacs est activĂ©. La valeur est dĂ©veloppĂ©e comme un raccourci clavier, donc le jeu standard de prĂ©fixes meta- ou Control- et de sĂ©quences de protections par contre-oblique est disponible. Utiliser les caractĂšres de protection \1 et \2 pour ouvrir et fermer les sĂ©quences de caractĂšres non imprimables, ce qui peut ĂȘtre utilisĂ© pour inclure une suite de caractĂšres de contrĂŽle du terminal dans la chaĂźne de mode.

enable-active-region (On)

Le curseur (« point ») correspond Ă  la position actuelle du curseur et la marque correspond Ă  une position de curseur sauvegardĂ©e. Le texte entre le curseur et la marque est dĂ©signĂ© comme la zone . Quand cette variable est rĂ©glĂ©e Ă  On , readline permet Ă  certaines commandes de dĂ©signer la zone comme active . Quand la zone est active, readline surligne le texte en utilisant la valeur de active-region-start-color qui est par dĂ©faut la chaĂźne qui active le mode standout du terminal. La rĂ©gion active montre le texte insĂ©rĂ© par collage spĂ©cial ( bracketed-paste ) et tout texte correspondant trouvĂ© lors de recherches incrĂ©mentales et non-incrĂ©mentales dans l’historique.

enable-bracketed-paste (On)

Quand configurĂ©e Ă  On , readline configurera le terminal pour pouvoir insĂ©rer chaque collage dans le tampon d’édition comme une chaĂźne de caractĂšres uniques, plutĂŽt que de traiter chaque caractĂšre comme s’il avait Ă©tĂ© lu du clavier. Cela empĂȘche readline d’exĂ©cuter toute commande d’édition liĂ©e Ă  des suites de touches apparaissant dans le texte collĂ©.

enable-keypad (Off)

Quand configurĂ©e Ă  On , readline essayera d’activer le pavĂ© numĂ©rique de l’application une fois appelĂ©e. Sur certains systĂšmes, c’est nĂ©cessaire pour utiliser les flĂšches.

enable-meta-key (On)

Quand configurĂ©e Ă  On , readline essayera d’activer toutes les touches de modificateur MĂ©ta que le terminal peut prendre en charge une fois appelĂ©. Sur de nombreux terminaux, la touche MĂ©ta est utilisĂ©e pour saisir des caractĂšres sur huit bits.

expand-tilde (Off)

Si configurée à On , le développement du tilde est effectué lorsque readline tente un complÚtement de commandes.

history-preserve-point (Off)

Si configurĂ©e Ă  On , le programme d’historique tente de placer le curseur au mĂȘme endroit sur chaque ligne d’historique rĂ©cupĂ©rĂ©e avec previous-history ou next-history .

history-size (unset)

Configure le nombre maximal d’élĂ©ments sauvegardĂ©s dans la file de l’historique. Si configurĂ© Ă  zĂ©ro, tous les Ă©lĂ©ments sont effacĂ©s et aucun nouvel Ă©lĂ©ment n’est sauvegardĂ©. Si configurĂ© Ă  une valeur strictement nĂ©gative, le nombre d’élĂ©ments de la file d’historique n’est pas limitĂ©. Par dĂ©faut, le nombre d’élĂ©ments est configurĂ© Ă  la valeur de la variable HISTSIZE de l’interprĂ©teur. En cas de tentative de rĂ©gler history-size Ă  une valeur non numĂ©rique, le nombre maximal d’élĂ©ments est configurĂ© à 5OO.

horizontal-scroll-mode (Off)

Quand configurĂ©e Ă  On , readline utilisera une seule ligne d’affichage et fera dĂ©filer la saisie horizontalement sur une seule ligne d’écran quand elle devient plus longue que la largeur de l’écran, plutĂŽt que de faire un retour Ă  la ligne. Ce rĂ©glage est activĂ© automatiquement pour les terminaux de hauteur 1 .

input-meta (Off)

Si configurĂ©e Ă  On , readline acceptera des saisies sur huit bits (autrement dit il ne supprimera pas le huitiĂšme bit), quel que soit le terminal utilisĂ©. Le nom meta-flag est un synonyme pour cette variable. La configuration par dĂ©faut est Off , mais readline la fixe Ă  On si le paramĂštre linguistique rĂ©gional contient des caractĂšres 8 bits. Cette variable dĂ©pend du paramĂštre linguistique rĂ©gional LC_CTYPE et peut ĂȘtre modifiĂ©e si le paramĂštre linguistique rĂ©gional est changĂ©.

isearch-terminators (« C-[C-J »)

La chaĂźne de caractĂšres qui doit terminer une recherche incrĂ©mentale sans que le caractĂšre ne soit exĂ©cutĂ© comme une commande. Si cette variable n’a pas reçu de valeur, les caractĂšres ESC et C-J termineront une recherche incrĂ©mentale.

keymap (emacs)

Configure le jeu de raccourcis readline actuel. L’ensemble des noms corrects de jeux de raccourcis est emacs , emacs-standard , emacs-meta , emacs-ctlx , vi , vi-command et vi-insert . vi est Ă©quivalent Ă  vi-command ; emacs est Ă©quivalent Ă  emacs-standard . La valeur par dĂ©faut est emacs ; la valeur de editing-mode modifie aussi le jeu de raccourcis par dĂ©faut.

keyseq-timeout (500)

Indique le temps que readline attendra un caractĂšre lors de la lecture d’une suite de touches ambiguĂ« (c’est-Ă -dire qui peut former une suite de touches complĂšte en utilisant l’entrĂ©e lue jusqu’à prĂ©sent, ou accepter une entrĂ©e supplĂ©mentaire pour complĂ©ter une suite de touches plus longue). Si aucune entrĂ©e n’est reçue pendant le temps d’attente, readline utilisera la suite la plus courte, mais complĂšte. La valeur est indiquĂ©e en milliseconde, donc une valeur de 1000 signifie que readline attendra pendant une seconde une entrĂ©e supplĂ©mentaire. Si cette variable est configurĂ©e Ă  une valeur infĂ©rieure ou Ă©gale Ă  zĂ©ro, ou Ă  une valeur non numĂ©rique, readline attendra la saisie d’une autre touche pour dĂ©cider de la suite de touches Ă  complĂ©ter.

mark-directories (On)

Si configurée à On , une barre oblique est ajoutée aux noms de répertoires.

mark-modified-lines (Off)

Si configurĂ©e Ă  On , les lignes d’historique qui ont Ă©tĂ© modifiĂ©es seront prĂ©cĂ©dĂ©es Ă  l’affichage d’un astĂ©risque ( * ).

mark-symlinked-directories (Off)

Si configurée à On , une barre oblique est ajoutée aux noms complétés si ce sont des liens symboliques vers des répertoires (selon la valeur de mark-directories ).

match-hidden-files (On)

Cette variable, quand elle est configurĂ©e Ă  On , conduit readline Ă  faire correspondre des fichiers dont le nom commence par un « . » (fichiers cachĂ©s) lors du complĂštement de noms de fichiers. Si configurĂ©e Ă  Off , le « . » du dĂ©but doit ĂȘtre fourni par l’utilisateur dans le nom de fichier Ă  complĂ©ter.

menu-complete-display-prefix (Off)

Si configurĂ©e Ă  On , le complĂštement de menu affiche le prĂ©fixe commun Ă  la liste de complĂštements possibles (qui peut ĂȘtre vide) avant de tourner dans la liste.

output-meta (Off)

Si configurĂ©e Ă  On , readline affichera directement les caractĂšres ayant leur huitiĂšme bit dĂ©fini plutĂŽt que d’utiliser une suite de caractĂšres de protection avec prĂ©fixe mĂ©ta. La configuration par dĂ©faut est Off , mais readline la fixe Ă  On si le paramĂštre linguistique rĂ©gional contient des caractĂšres 8 bits. Cette variable dĂ©pend du paramĂštre linguistique rĂ©gional LC_CTYPE et peut ĂȘtre modifiĂ©e si le paramĂštre linguistique rĂ©gional est changĂ©.

page-completions (On)

Si configurée à On , readline utilise un afficheur de texte interne du type more pour afficher les complÚtements possibles sur un seul plein écran.

print-completions-horizontally (Off)

Si configurĂ©e Ă  On , readline affichera les complĂštements correspondants triĂ©s horizontalement dans l’ordre alphabĂ©tique plutĂŽt que verticalement.

revert-all-at-newline (Off)

Si configurĂ©e Ă  On , readline annulera toutes les modifications des lignes d’historique avant de s’arrĂȘter quand accept-line est exĂ©cutĂ©. Par dĂ©faut les lignes d’historique peuvent ĂȘtre modifiĂ©es et conservent les listes d’annulation individuelles au fur et Ă  mesure des appels Ă  readline .

show-all-if-ambiguous (Off)

Cela modifie le comportement par dĂ©faut des fonctions de complĂštement. Si configurĂ©e Ă  On , les mots qui ont plus d’un complĂštement possibles conduisent Ă  l’affichage immĂ©diat des correspondances plutĂŽt qu’à l’émission d’une alarme.

show-all-if-unmodified (Off)

Cela modifie le comportement par dĂ©faut des fonctions de complĂštement de façon similaire Ă  show-all-if-ambiguous . Si configurĂ©e Ă  On , les mots qui ont plus d’un complĂštement possible sans aucun complĂštement partiel possible (les complĂštements possibles ne partagent pas de prĂ©fixe commun) conduisent Ă  l’affichage immĂ©diat des correspondances plutĂŽt qu’à l’émission d’une alarme.

show-mode-in-prompt (Off)

Si configurĂ©e Ă  On , ajoute une chaĂźne au dĂ©but de l’invite indiquant le mode d’édition : Emacs, commande Vi ou insertion Vi. L’utilisateur peut configurer la chaĂźne de mode (par exemple, emacs-mode-string ).

skip-completed-text (Off)

Si configurĂ©e Ă  On , modifie le comportement par dĂ©faut du complĂštement lors de l’insertion d’une unique correspondance dans la ligne. Elle n’est utilisĂ©e que lors d’un complĂštement effectuĂ© au milieu d’un mot. Si elle est activĂ©e, readline n’insĂšre pas de caractĂšres de complĂštement correspondant Ă  des caractĂšres situĂ©s aprĂšs le curseur dans le mot en train d’ĂȘtre complĂ©tĂ©, ainsi les parties du mots situĂ©es aprĂšs le curseur ne sont pas dupliquĂ©es.

vi-cmd-mode-string ((cmd))

Si la variable show-mode-in-prompt est activĂ©e, cette chaĂźne est affichĂ©e immĂ©diatement avant la derniĂšre ligne de la premiĂšre invite quand le mode d’édition de vi est activĂ© et en mode commande. La valeur est dĂ©veloppĂ©e comme un raccourci clavier, donc le jeu standard de prĂ©fixes meta- ou Control- et de sĂ©quences de protections par contre-oblique est disponible. Utiliser les caractĂšres de protection \1 et \2 pour ouvrir et fermer les sĂ©quences de caractĂšres non imprimables, ce qui peut ĂȘtre utilisĂ© pour inclure une suite de caractĂšres de contrĂŽle du terminal dans la chaĂźne de mode.

vi-ins-mode-string ((ins))

Si la variable show-mode-in-prompt est activĂ©e, cette chaĂźne est affichĂ©e immĂ©diatement avant la derniĂšre ligne de la premiĂšre invite quand le mode d’édition de vi est activĂ© et en mode insertion. La valeur est dĂ©veloppĂ©e comme un raccourci clavier, donc le jeu standard de prĂ©fixes meta- ou Control- et de sĂ©quences de protections par contre-oblique est disponible. Utiliser les caractĂšres de protection \1 et \2 pour ouvrir et fermer les sĂ©quences de caractĂšres non imprimables, ce qui peut ĂȘtre utilisĂ© pour inclure une suite de caractĂšres de contrĂŽle du terminal dans la chaĂźne de mode.

visible-stats (Off)

Si configurée à On , un caractÚre indiquant le type de fichier, comme signalé par stat (2) est ajouté aux noms de fichiers en affichant les complÚtements possibles.

Constructions conditionnelles de readline

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

$if

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

mode

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

term

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

version

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

application

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

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

variable

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

$endif

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

$else

Permet d’ajouter des commandes qui seront exĂ©cutĂ©es si un $if Ă©choue.

$include

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

$include /etc/inputrc

Recherche

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

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

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

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

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

Noms des commandes readline

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

Commandes de déplacement

beginning-of-line (C-a)

Reculer au début de la ligne actuelle.

end-of-line (C-e)

Avancer Ă  la fin de la ligne.

forward-char (C-f)

Avancer d’un caractùre.

backward-char (C-b)

Reculer d’un caractùre.

forward-word (M-f)

Avancer jusqu’à la fin du mot suivant. Les mots sont composĂ©s de caractĂšres alphanumĂ©riques (lettres et chiffres).

backward-word (M-b)

Reculer jusqu’au dĂ©but du mot actuel ou du prĂ©cĂ©dent. Les mots sont composĂ©s de caractĂšres alphanumĂ©riques (lettres et chiffres).

shell-forward-word

Avancer jusqu’à la fin du mot suivant. Les mots sont sĂ©parĂ©s par des mĂ©tacaractĂšres non protĂ©gĂ©s de l’interprĂ©teur.

shell-backward-word

Reculer jusqu’au dĂ©but du mot actuel ou du prĂ©cĂ©dent. Les mots sont sĂ©parĂ©s par des mĂ©tacaractĂšres non protĂ©gĂ©s de l’interprĂ©teur.

previous-screen-line

Tenter de dĂ©placer le curseur vers la mĂȘme colonne physique de l’écran sur la ligne physique prĂ©cĂ©dente de l’écran. Cela n’aura pas l’effet dĂ©sirĂ© si la ligne actuelle de readline n’accepte pas sur d’une ligne physique ou si le but n’est pas supĂ©rieur Ă  la longueur de l’invite plus la largeur de l’écran.

next-screen-line

Tenter de dĂ©placer le curseur vers la mĂȘme colonne de l’écran physique sur la ligne suivante de l’écran physique. Cela n’aura pas l’effet dĂ©sirĂ© si la ligne actuelle de readline n’accepte pas plus d’une ligne physique ou si la longueur de la ligne actuelle de readline n’est pas supĂ©rieure Ă  la longueur de l’invite plus la largeur de l’écran.

clear-display (M-C-l)

Effacer l’écran et, si possible, le tampon de dĂ©filement du terminal, puis rafraĂźchir la ligne actuelle, en laissant la ligne actuelle au sommet de l’écran.

clear-screen (C-l)

Effacer l’écran, puis rafraĂźchir la ligne actuelle, en laissant la ligne actuelle au sommet de l’écran. S’il y a un argument, rafraĂźchir la ligne actuelle sans effacer l’écran.

redraw-current-line

RafraĂźchir la ligne actuelle.

Commandes de manipulation de l’historique

accept-line (changement de ligne, retour chariot)

Valider la ligne, sans se soucier de l’emplacement du curseur. Si la ligne n’est pas vide, l’ajouter Ă  la file d’historique, sous contrĂŽle de la variable HISTCONTROL . Si cette ligne est une ligne d’historique modifiĂ©e, restaurer cette derniĂšre.

previous-history (C-p)

RĂ©cupĂ©rer la commande prĂ©cĂ©dente de la file d’historique, en remontant dans la file.

next-history (C-n)

RĂ©cupĂ©rer la commande suivante dans la file d’historique, en descendant dans la file.

beginning-of-history (M-<)

RĂ©cupĂ©rer la premiĂšre ligne de l’historique.

end-of-history (M->)

Retourner à la fin de l’historique de saisie, c’est-à-dire à la ligne en cours de saisie.

operate-and-get-next (C-o)

Valider la ligne actuelle pour exĂ©cution et rĂ©cupĂ©rer de l’historique la ligne suivante liĂ©e Ă  la ligne actuelle pour Ă©dition. Si un argument numĂ©rique est fourni, il spĂ©cifie l’entrĂ©e de l’historique Ă  utiliser Ă  la place de la ligne actuelle.

fetch-history

Avec argument numĂ©rique, rĂ©cupĂ©rer cette entrĂ©e de la file d’historique et en faire la ligne actuelle. Sans argument, revenir Ă  la premiĂšre entrĂ©e de la file d’historique.’

reverse-search-history (C-r)

Rechercher en arriĂšre dans l’historique, en remontant. C’est une recherche incrĂ©mentale.

forward-search-history (C-s)

Rechercher en avant dans l’historique, en descendant. C’est une recherche incrĂ©mentale.

non-incremental-reverse-search-history (M-p)

Rechercher une chaĂźne en arriĂšre dans l’historique, en remontant depuis la ligne actuelle, utiliser une recherche non incrĂ©mentale pour une chaĂźne fournie par l’utilisateur.

non-incremental-forward-search-history (M-n)

Rechercher une chaĂźne en avant dans l’historique, utiliser une recherche non incrĂ©mentale pour une chaĂźne fournie par l’utilisateur.

history-search-forward

Rechercher en avant dans l’historique la chaĂźne comprise entre le dĂ©but de la ligne actuelle et la position du curseur. C’est une recherche non incrĂ©mentale.

history-search-backward

Rechercher en arriĂšre dans l’historique la chaĂźne comprise entre le dĂ©but de la ligne actuelle et la position du curseur. C’est une recherche non incrĂ©mentale.

history-substring-search-backward

Rechercher en arriĂšre dans l’historique la chaĂźne comprise entre le dĂ©but de la ligne actuelle et la position du curseur. La chaĂźne recherchĂ©e peut trouver une correspondance n’importe oĂč dans une ligne de l’historique. C’est une recherche non incrĂ©mentale.

history-substring-search-forward

Rechercher en avant dans l’historique la chaĂźne comprise entre le dĂ©but de la ligne actuelle et la position du curseur. La chaĂźne recherchĂ©e peut trouver une correspondance n’importe oĂč dans une ligne de l’historique. C’est une recherche non incrĂ©mentale.

yank-nth-arg (M-C-y)

InsĂ©rer, Ă  l’emplacement du curseur, le premier argument de la commande prĂ©cĂ©dente. GĂ©nĂ©ralement, il s’agit du second mot de la ligne prĂ©cĂ©dente. Avec un argument n , insĂ©rer le n -iĂšme mot de la commande prĂ©cĂ©dente (les mots sont numĂ©rotĂ©s Ă  partir de 0 ). Un argument nĂ©gatif insĂšre le n -iĂšme mot en partant de la fin de la commande prĂ©cĂ©dente. Une fois que l’argument n est traitĂ©, l’argument est extrait comme si le dĂ©veloppement d’historique « ! n » avait Ă©tĂ© indiquĂ©.

yank-last-arg (M-., M-_)

InsĂ©rer le dernier argument de la commande prĂ©cĂ©dente (le dernier mot de l’élĂ©ment prĂ©cĂ©dent de la file d’historique). Avec un argument numĂ©rique, se comporte exactement comme yank-nth-arg . Les appels successifs Ă  yank-last-arg remontent dans la file d’historique en insĂ©rant le dernier mot (ou le mot indiquĂ© par l’argument du premier appel) de chaque ligne tour Ă  tour. Tous les arguments numĂ©riques fournis Ă  ces appels successifs dĂ©terminent la direction de dĂ©placement dans l’historique. Un argument nĂ©gatif modifie la direction dans l’historique (en avant ou en arriĂšre). Les outils de dĂ©veloppement d’historique sont utilisĂ©s pour extraire le dernier mot, comme si le dĂ©veloppement d’historique « !$ » avait Ă©tĂ© indiquĂ©.

shell-expand-line (M-C-e)

DĂ©velopper, comme le fait l’interprĂ©teur, la ligne actuelle. Cela effectue le dĂ©veloppement des alias et d’historique, ainsi que tous les dĂ©veloppements de mot de l’interprĂ©teur. Consultez ci-dessous DÉVELOPPEMENT DE L’HISTORIQUE , pour une description dĂ©taillĂ©e du dĂ©veloppement de l’historique.

history-expand-line (M-ˆ)

Effectuer le dĂ©veloppement d’historique sur la ligne actuelle. Consultez ci-dessous DÉVELOPPEMENT DE L’HISTORIQUE , pour une description dĂ©taillĂ©e.

magic-space

Effectuer le dĂ©veloppement de l’historique sur la ligne actuelle et insĂ©rer une espace. Consultez ci-dessous DÉVELOPPEMENT DE L’HISTORIQUE , pour une description dĂ©taillĂ©e.

alias-expand-line

Effectuer le dĂ©veloppement des alias sur la ligne actuelle. Consultez ALIAS ci-dessus pour une description des dĂ©veloppements d’alias.

history-and-alias-expand-line

Effectuer le dĂ©veloppement de l’historique et des alias sur la ligne actuelle.

insert-last-argument (M-., M-_)

Un synonyme de yank-last-arg .

edit-and-execute-command (C-x C-e)

Appeler un Ă©diteur sur la ligne de commande actuelle et exĂ©cuter le rĂ©sultat comme une commande d’interprĂ©teur. Bash tente d’appeler, dans cet ordre, $VISUAL , $EDITOR et emacs comme Ă©diteur.

Commande d’édition de texte

end-of-file (généralement C-d)

Le caractĂšre indiquant la fin de fichier, comme dĂ©fini, par exemple, par ‘‘stty’’. Si ce caractĂšre est lu alors qu’aucun caractĂšre n’est sur la ligne, et que le curseur est au dĂ©but de la ligne, readline l’interprĂšte comme le fin de l’entrĂ©e et renvoie EOF .

delete-char (C-d)

Effacer le caractĂšre sous le curseur. Si cette fonction est associĂ©e au mĂȘme caractĂšre que le caractĂšre EOF du terminal, comme c’est souvent le cas avec C-d , consultez les effets dans le paragraphe prĂ©cĂ©dent.

backward-delete-char (Effacement ou « Rubout »)

Effacer le caractÚre avant le curseur. Lorsque un argument numérique est indiqué, le texte effacé est sauvegardé dans le tampon circulaire.

forward-backward-delete-char

Effacer le caractĂšre sous le curseur, sauf s’il est en fin de ligne, auquel cas le caractĂšre avant le curseur est effacĂ©.

quoted-insert (C-q, C-v)

Ajouter littĂ©ralement sur la ligne le caractĂšre saisi suivant. Cela permet d’insĂ©rer des caractĂšres comme C-q , par exemple.

tab-insert (C-v TAB)

Insérer un caractÚre de tabulation.

self-insert (a, b, A, 1, !, ...)

Insérer le caractÚre mentionné.

transpose-chars (C-t)

Échanger les caractĂšres se trouvant devant et sous le curseur. Le curseur est avancĂ© d’un caractĂšre. À la fin d’une ligne, les caractĂšres Ă©changĂ©s sont les deux prĂ©cĂ©dents. Les arguments nĂ©gatifs n’ont aucun effet.

transpose-words (M-t)

Déplace le mot avant le curseur au-delà du mot aprÚs le curseur et déplace aussi le curseur sur ce mot. Si le curseur est à la fin de la ligne, cela échange les deux derniers mots de la ligne.

upcase-word (M-u)

Transformer le mot actuel (ou le suivant) en majuscules. Avec un argument négatif, agir sur le mot précédent mais ne pas déplacer le curseur.

downcase-word (M-l)

Transformer le mot actuel (ou le suivant) en minuscules. Avec un argument négatif, agir sur le mot précédent mais ne pas déplacer le curseur.

capitalize-word (M-c)

Passer en majuscule l’initiale du mot actuel (ou du suivant). Avec un argument nĂ©gatif, agir sur le mot prĂ©cĂ©dent mais ne pas dĂ©placer le curseur.

overwrite-mode

Basculer en mode d’écrasement. Avec un argument numĂ©rique explicite strictement positif, bascule en mode d’écrasement. Avec un argument numĂ©rique explicite nĂ©gatif ou nul, bascule en mode d’insertion. Cette commande n’affecte que le mode emacs ; le mode vi Ă©crase de façon diffĂ©rente. Chaque appel Ă  readline() dĂ©marre en mode d’insertion. En mode d’écrasement, les caractĂšres associĂ©s Ă  self-insert remplacent le texte sous le curseur plutĂŽt que de dĂ©placer le texte vers la droite. Les caractĂšres associĂ©s Ă  backward-delete-char remplacent le caractĂšre avant le curseur par une espace. Par dĂ©faut, cette commande n’est pas associĂ©e.

Effacement et récupération

kill-line (C-k)

Effacer le texte depuis la position du curseur jusqu’à la fin de la ligne.

backward-kill-line (C-x Effacement)

Effacer en arriĂšre jusqu’au dĂ©but de ligne.

unix-line-discard (C-u)

Effacer le texte entre le début de la ligne et la position du curseur. Le texte est sauvegardé dans le tampon circulaire.

kill-whole-line

Effacer toute la ligne sans tenir compte de la position du curseur.

kill-word (M-d)

Effacer le texte entre le curseur et la fin du mot actuel ou, si entre des mots, jusqu’à la fin du mot suivant. Les limites des mots sont identiques Ă  celles utilisĂ©es par forward-word .

backward-kill-word (M-Effacement)

Effacer le mot sous le curseur. Les limites de mots sont identiques à celles utilisées par backward-word .

shell-kill-word

Effacer le texte entre le curseur et la fin du mot actuel ou, si entre des mots, jusqu’à la fin du mot suivant. Les limites des mots sont identiques Ă  celles utilisĂ©es par shell-forward-word .

shell-backward-kill-word

Effacer le mot sous le curseur. Les limites de mots sont identiques à celles utilisées par shell-backward-word .

unix-word-rubout (C-w)

Effacer le mot sous le curseur, en utilisant une espace blanche comme limite de mot. Le texte effacé est sauvegardé dans le tampon circulaire.

unix-filename-rubout

Effacer le mot sous le curseur, en utilisant l’espace blanche et la barre oblique comme limites de mot. Le texte supprimĂ© est sauvegardĂ© dans le tampon circulaire.

delete-horizontal-space (M-\)

Effacer toutes les espaces blanches et les tabulations autour du curseur.

kill-region

Effacer le texte de la zone actuelle.

copy-region-as-kill

Copier le texte de la zone vers le tampon circulaire.

copy-backward-word

Copier le mot précédant le curseur dans le tampon circulaire. Les limites de mots sont identiques à celles de backward-word .

copy-forward-word

Copier le mot suivant le curseur dans le tampon circulaire. Les limites de mots sont identiques Ă  celles de forward-word .

yank (C-y)

Récupérer le texte au sommet du tampon circulaire à la position du curseur dans le tampon.

yank-pop (M-y)

ExĂ©cuter une rotation du tampon circulaire et rĂ©cupĂ©rer le texte situĂ© Ă  son nouveau sommet. Cela ne fonctionne qu’aprĂšs yank ou yank-pop .

Arguments numériques

digit-argument (M-0, M-1, ..., M--)

Ajouter ce chiffre Ă  l’argument en cours de rĂ©daction ou crĂ©er un nouvel argument. M-- crĂ©e un argument nĂ©gatif.

universal-argument

Il s’agit d’une autre façon d’indiquer un argument. Si cette commande est suivie d’un ou plusieurs chiffres facultativement prĂ©cĂ©dĂ©s d’un signe moins, ces chiffres dĂ©finissent l’argument. Si la commande est suivie de chiffres, une nouvelle exĂ©cution de universal-argument termine l’argument numĂ©rique, mais est ignorĂ©e dans les autres cas. Par exception, si cette commande est suivie immĂ©diatement par un caractĂšre qui n’est ni un chiffre ni le signe moins, le compteur d’arguments de la commande suivante est multipliĂ© par 4. Le compteur d’arguments est initialement Ă  un, donc la premiĂšre exĂ©cution de cette commande amĂšne le compteur d’arguments Ă  quatre, une seconde fois porte le compteur d’arguments Ă  seize et ainsi de suite.

ComplĂštement

complete (TAB)

Essayer d’effectuer un complĂštement du texte situĂ© avant le curseur. Bash effectue le complĂštement en considĂ©rant tour Ă  tour le texte comme une variable (s’il commence par $ ), un nom d’utilisateur (s’il commence par ˜ ), un nom de machine (s’il commence par @ ) ou une commande (y compris les alias et les fonctions). Si aucun ne correspond, un complĂštement de nom de fichier est essayĂ©.

possible-completions (M-?)

Afficher les complÚtements possibles pour le texte situé avant le curseur.

insert-completions (M-*)

InsĂ©rer avant le curseur l’ensemble des complĂštements qui auraient Ă©tĂ© produits par possible-completions .

menu-complete

Analogue Ă  complete , mais en remplaçant le mot Ă  complĂ©ter par une seule correspondance de la liste des complĂštements possibles. Des exĂ©cutions rĂ©pĂ©tĂ©es de menu-complete parcourent la liste des complĂštements possibles, en insĂ©rant chaque correspondance tour Ă  tour. À la fin de la liste des complĂštements, une alarme est Ă©mise (selon la configuration de bell-style ) et le texte original est restaurĂ©. Un argument de n dĂ©place de n positions dans la liste des correspondances. Un argument nĂ©gatif peut ĂȘtre utilisĂ© pour revenir en arriĂšre dans la liste. Cette commande est destinĂ©e Ă  ĂȘtre associĂ©e Ă  la touche TAB , mais ne l’est pas par dĂ©faut.

menu-complete-backward

Identique Ă  menu-complete , mais se dĂ©place en arriĂšre dans la liste des complĂštements possibles, comme si un argument nĂ©gatif avait Ă©tĂ© passĂ© Ă  menu-complete . Cette commande n’est associĂ©e Ă  aucune touche par dĂ©faut.

delete-char-or-list

Effacer le caractĂšre sous le curseur sauf au dĂ©but ou en fin de ligne (comme delete-char ). En fin de ligne, se comporte comme possible-completions . Cette commande n’est associĂ©e Ă  aucune touche par dĂ©faut.

complete-filename (M-/)

Essayer le complÚtement des noms de fichiers sur le texte situé avant le curseur.

possible-filename-completions (C-x /)

Afficher les complÚtements possibles du texte situé avant le curseur, traité comme un nom de fichier.

complete-username (M-˜)

Essayer le complĂštement sur le texte situĂ© avant le curseur, en le traitant comme un nom d’utilisateur.

possible-username-completions (C-x ˜)

Afficher les complĂštements possibles du texte situĂ© avant le curseur, en le traitant comme un nom d’utilisateur.

complete-variable (M-$)

Essayer le complĂštement sur le texte situĂ© avant le curseur, en le traitant comme une variable de l’interprĂ©teur.

possible-variable-completions (C-x $)

Afficher les complĂštements possibles du texte situĂ© avant le curseur, en le traitant comme une variable de l’interprĂ©teur.

complete-hostname (M-@)

Essayer le complÚtement sur le texte situé avant le curseur, en le traitant comme un nom de machine.

possible-hostname-completions (C-x @)

Afficher les complÚtements possibles du texte situé avant le curseur, en le traitant comme un nom de machine.

complete-command (M-!)

Essayer le complĂštement sur le texte situĂ© avant le curseur, en le traitant comme un nom de commande. Le complĂštement des commandes essaie de faire correspondre le texte, dans cet ordre, aux alias, mots rĂ©servĂ©s, fonctions de l’interprĂ©teur, commandes internes de l’interprĂ©teur et finalement les noms de fichiers exĂ©cutables.

possible-command-completions (C-x !)

Afficher les complÚtements possibles du texte situé avant le curseur, en le traitant comme un nom de commande.

dynamic-complete-history (M-TAB)

Essayer le complĂštement du texte situĂ© avant le curseur, en le comparant aux lignes de la file d’historique lui correspondant pour les complĂštements possibles.

dabbrev-expand

Essayer le menu de complĂštement du texte situĂ© avant le curseur, en le comparant aux lignes de la file d’historique lui correspondant pour les complĂštements possibles.

complete-into-braces (M-{)

Effectuer un complĂštement en noms de fichiers et insĂ©rer la liste des complĂštements possibles entre accolades afin que la liste soit exploitable par l’interprĂ©teur (consultez DĂ©veloppement des accolades ci-dessus).

Macros clavier

start-kbd-macro (C-x ()

Démarrer la mémorisation dans la macro en cours des caractÚres tapés.

end-kbd-macro (C-x ))

ArrĂȘter la mĂ©morisation dans la macro en cours des caractĂšres saisis et conserver la dĂ©finition.

call-last-kbd-macro (C-x e)

Réexécuter la derniÚre macro définie, en agissant comme si les caractÚres contenus dans cette macro étaient saisis au clavier.

print-last-kbd-macro ()

Afficher la derniĂšre macro de clavier dĂ©finie, mise en forme de façon Ă  ĂȘtre incorporĂ©e dans un fichier inputrc .

Divers

re-read-init-file (C-x C-r)

Lire le contenu du fichier inputrc et prendre en compte tous raccourcis ou affectations de variables qui s’y trouvent.

abort (C-g)

Abandonner l’édition en cours et Ă©mettre une alarme de terminal (selon la configuration de la variable bell-style ).

do-lowercase-version (M-A, M-B, M- x , ...)

Si le caractÚre x précédé de Méta est en majuscule, exécuter la commande qui est associée aux caractÚres minuscules correspondants. Le comportement est non défini si x est déjà en minuscule.

prefix-meta (ESC)

Considérer le prochain caractÚre saisi comme un Méta. ESC f est équivalent à Meta-f .

undo (C-_, C-x C-u)

Fonction d’annulation incrĂ©mentale, chaque ligne Ă©tant mĂ©morisĂ©e sĂ©parĂ©ment.

revert-line (M-r)

Annuler toutes les modifications sur cette ligne. C’est Ă©quivalent Ă  rĂ©pĂ©ter undo suffisamment de fois pour ramener la ligne Ă  son Ă©tat initial.

tilde-expand (M-&)

Effectuer le développement du tilde sur le mot actuel.

set-mark (C-@, M-<space>)

Placer la marque à la position actuelle du curseur. Si un argument numérique est fourni, la marque est posée à la position correspondante.

exchange-point-and-mark (C-x C-x)

Échanger le curseur et la marque. La position actuelle du curseur est configurĂ©e Ă  la position sauvegardĂ©e prĂ©cĂ©demment et l’ancienne position du curseur est mĂ©morisĂ©e comme la marque.

character-search (C-])

Un caractĂšre est lu et le curseur dĂ©placĂ© Ă  l’occurrence suivante de ce caractĂšre. Un argument nĂ©gatif recherche les occurrences prĂ©cĂ©dentes.

character-search-backward (M-C-])

Un caractĂšre est lu et le curseur dĂ©placĂ© Ă  l’occurrence prĂ©cĂ©dente de ce caractĂšre. Un argument nĂ©gatif recherche les occurrences suivantes.

skip-csi-sequence

Lire suffisamment de caractĂšres pour englober une suite multitouche comme celles dĂ©finies pour des touches comme DĂ©but et Fin. De telles suites commencent par un indicateur de suite de contrĂŽle (« control sequence indicator » ou CSI), habituellement ESC-[. Si cette suite est associĂ©e Ă  "\[", les touches qui produisent de telles suites n’auront pas d’effet Ă  moins d’ĂȘtre explicitement associĂ©es Ă  une commande readline, au lieu d’insĂ©rer des caractĂšres parasites dans le tampon d’édition. N’est associĂ©e Ă  aucune touche par dĂ©faut, mais est souvent associĂ©e Ă  ESC-[.

insert-comment (M-#)

Sans argument numĂ©rique, la valeur de la variable comment-begin de readline est insĂ©rĂ©e au dĂ©but de la ligne actuelle. Si un argument numĂ©rique est fourni, cette commande agit comme une bascule : si les caractĂšres du dĂ©but de ligne ne correspondent pas Ă  la valeur de comment-begin , la valeur est insĂ©rĂ©e, sinon, les caractĂšres de comment-begin sont effacĂ©s du dĂ©but de la ligne. Dans les deux cas, la ligne est acceptĂ©e comme si un changement de ligne avait Ă©tĂ© saisi. La valeur par dĂ©faut de comment-begin conduit cette commande Ă  transformer la ligne actuelle de l’interprĂ©teur en commentaire. Si un argument numĂ©rique conduit Ă  l’effacement du caractĂšre de commentaire, la ligne sera exĂ©cutĂ©e par l’interprĂ©teur.

spell-correct-word (C-x s)

Effectuer la correction orthographique sur le mot actuel, en le traitant comme un rĂ©pertoire ou un nom de fichier, de la mĂȘme maniĂšre que l’option de l’interprĂ©teur cdspell . Les limites des mots sont identiques Ă  celles utilisĂ©es par shell-forward-word .

glob-complete-word (M-g)

Le mot avant le curseur est traité comme un motif pour un développement de chemin, avec un astérisque implicitement ajouté. Ce motif est utilisé pour produire une liste de noms de fichiers correspondants pour de possibles complÚtements.

glob-expand-word (C-x *)

Le mot précédant le curseur est considéré comme un motif de développement de chemin et la liste des fichiers correspondants est insérée à sa place. Si un argument numérique est fourni, un astérisque est ajouté avant le développement du chemin.

glob-list-expansions (C-x g)

La liste des développements qui auraient été produits par glob-expand-word est affichée et la ligne est rafraßchie. Si un argument numérique est fourni, un astérisque est ajouté devant le développement du chemin.

dump-functions

Afficher toutes les fonctions et leurs raccourcis clavier sur le flux de sortie de readline. Si un argument numĂ©rique est fourni, la sortie est mise en forme de façon Ă  ĂȘtre incorporĂ©e dans un fichier inputrc .

dump-variables

Afficher toutes les variables readline modifiables et leurs valeurs sur le flux de sortie de readline. Si un argument numĂ©rique est fourni, la sortie est mise en forme de façon Ă  ĂȘtre incorporĂ©e dans un fichier inputrc .

dump-macros

Afficher toutes les suites de touches readline associĂ©es Ă  des macros et les chaĂźnes auxquelles elles correspondent. Si un argument numĂ©rique est fourni, la sortie est mise en forme de façon Ă  ĂȘtre incorporĂ©e dans un fichier inputrc .

display-shell-version (C-x C-v)

Afficher des informations sur la version actuelle de bash .

ComplĂštement programmable

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HISTORIQUE

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

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

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

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

DÉVELOPPEMENT DE L’HISTORIQUE

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

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

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

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

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

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

Indicateur d’évĂ©nement

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

!

DĂ©bute une substitution d’historique, sauf s’il est suivi par un blanc , changement de ligne, retour chariot, = ou ( (lorsque l’option d’interprĂ©teur extglob est activĂ©e en utilisant la commande interne shopt ).

! n

Se rapporte Ă  la ligne de commande n .

!- n

Se rapporte Ă  la commande actuelle moins n .

!!

Se rapporte Ă  la commande prĂ©cĂ©dente. C’est un synonyme de « !-1 ».

! chaĂźne

Se rapporte Ă  la commande la plus rĂ©cente prĂ©cĂ©dant la position actuelle dans la file d’historique commençant par chaĂźne .

!? chaĂźne [ ? ]

Se rapporte Ă  la commande la plus rĂ©cente prĂ©cĂ©dant la position actuelle dans la file d’historique contenant chaĂźne . Le ? final peut ĂȘtre omis si chaĂźne est immĂ©diatement suivie d’un changement de ligne. Si chaĂźne est absente, la chaĂźne de la derniĂšre recherche est utilisĂ©e ; c’est une erreur s’il n’y a pas de chaĂźne de recherche prĂ©cĂ©dente.

ˆ chaüne_1 ˆ chaüne_2 ˆ

Substitution rapide. RĂ©pĂ©ter la commande prĂ©cĂ©dente en remplaçant chaĂźne_1 par chaĂźne_2 . Équivalent Ă  « !!:s ˆ chaĂźne_1 ˆ chaĂźne_2 ˆ » (consultez Modificateurs ci-dessous).

!#

La ligne entiĂšre tapĂ©e jusqu’à prĂ©sent.

Indicateurs de mots

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

Le zĂ©roiĂšme mot. Pour l’interprĂ©teur, c’est le nom de la commande.

n

Le n -iĂšme mot.

ˆ

Le premier argument, c’est-à-dire le mot 1.

$

Le dernier mot. C’est gĂ©nĂ©ralement le dernier argument, mais qui sera dĂ©veloppĂ© en zĂ©roiĂšme mot s’il n’y a qu’un seul mot sur la ligne.

%

Le premier mot correspondant Ă  la recherche « ? chaĂźne ? » la plus rĂ©cente, si la chaĂźne de recherche dĂ©bute par un caractĂšre qui fait partie d’un mot.

x - y

Un intervalle de mots, « - y » permet d’abrĂ©ger « 0- y ».

*

Tous les mots sauf le zĂ©roiĂšme. C’est un synonyme pour « 1-$ ». Il n’est pas erronĂ© d’utiliser * s’il n’y a qu’un mot dans l’évĂ©nement ; la chaĂźne vide est renvoyĂ©e dans ce cas.

x *

Abréviation de x -$ .

x -

Abréviation de x -$ comme x * , mais sans le dernier mot. Si x est absent, la valeur par défaut est 0 .

Si un indicateur de mot est fourni sans indication d’évĂ©nement, la derniĂšre commande est utilisĂ©e.

Modificateurs

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

h

Éliminer la fin du chemin d’accĂšs, en ne gardant que le dĂ©but.

t

Supprimer tout le dĂ©but d’un chemin d’accĂšs, en ne gardant que la fin.

r

Supprimer un suffixe final de la forme .xxx , en ne gardant que le nom de base.

e

Supprimer tout sauf le suffixe final.

p

Afficher la nouvelle commande sans l’exĂ©cuter.

q

Protéger les mots substitués, pour éviter des substitutions futures.

x

ProtĂ©ger les mots substituĂ©s comme avec q , mais avec sĂ©paration des mots aux blancs et changements de ligne. Les modificateurs q et x s’excluent mutuellement ; le dernier fourni est utilisĂ©.

s/ ancien / nouveau /

Remplacer par nouveau la premiĂšre occurrence de ancien sur la ligne d’évĂ©nement. Tout caractĂšre peut ĂȘtre utilisĂ© comme dĂ©limiteur Ă  la place de /. Le dernier dĂ©limiteur est facultatif si c’est le dernier caractĂšre de la ligne d’évĂ©nement. Le dĂ©limiteur peut ĂȘtre protĂ©gĂ© dans ancien et nouveau avec une seule contre-oblique. Si & apparaĂźt dans nouveau , il est remplacĂ© par ancien . Une seule contre-oblique protĂ©gera le &. Si ancien est NULL, il est configurĂ© au dernier ancien substituĂ© ou si aucune substitution n’a eu lieu prĂ©cĂ©demment, Ă  la derniĂšre chaĂźne dans une recherche !? chaĂźne [?] . Si nouveau est NULL, chaque correspondance Ă  ancien est supprimĂ©e.

&

Répéter la substitution précédente.

g

Appliquer les modifications sur toute la ligne d’évĂ©nements. C’est utilisĂ© conjointement Ă  « :s » (par exemple « :gs/ ancien / nouveau / ») ou « :& ». Si utilisĂ© avec « :s », tout dĂ©limiteur peut ĂȘtre utilisĂ© Ă  la place de / et le dernier dĂ©limiteur est facultatif si c’est le dernier caractĂšre de la ligne d’évĂ©nements. Un a peut ĂȘtre utilisĂ© en tant que synonyme de g .

G

Appliquer une fois le modificateur « s » ou « & » suivant Ă  tous les mots de la ligne d’évĂ©nement.

COMMANDES INTERNES DE L’INTERPRÉTEUR

Sauf indication contraire, chaque commande interne dĂ©crite dans ce paragraphe comme acceptant des options prĂ©cĂ©dĂ©es par - accepte Ă©galement la notation -- pour signaler la fin des options. Les commandes internes : , true , false et test / [ n’acceptent aucune option et ne traitent pas -- particuliĂšrement. Les commandes internes exit , logout , return , break , continue , let et shift acceptent et traitent les arguments commençant par - sans avoir besoin de -- . Les autres commandes internes, qui acceptent des arguments mais qui ne sont pas dĂ©clarĂ©es explicitement comme acceptant des options, considĂšrent les arguments commençant par - comme des options non valides, donc -- est obligatoire pour Ă©viter cette interprĂ©tation.
:
[ arguments ]

Sans effet ; cette commande ne fait rien d’autre que dĂ©velopper les arguments et effectuer toute redirection indiquĂ©e. L’état renvoyĂ© est 0 .

. fichier [ arguments ]
source
fichier [ arguments ]

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

alias [ -p ] [ nom [= valeur ] ...]

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

bg [ tĂąche ...]

Reprendre en arriĂšre-plan chaque tĂąche suspendue, comme si elle avait Ă©tĂ© lancĂ©e avec & . Si aucune tĂąche n’est prĂ©cisĂ©e, la notion d’interprĂ©teur de tĂąche actuelle est utilisĂ©e. bg tĂąche renvoie 0 sauf si le contrĂŽle des tĂąches est dĂ©sactivĂ©, ou, quand le contrĂŽle des tĂąches est activĂ©, si une tĂąche prĂ©cisĂ©e n’a pas Ă©tĂ© trouvĂ©e ou a Ă©tĂ© lancĂ©e sans contrĂŽle de tĂąches.

bind [ -m jeu_de_raccourcis ] [ -lpsvPSVX ]
bind
[ -m jeu_de_raccourcis ] [ -q fonction ] [ -u fonction ] [ -r
suite_de_touches
]
bind
[ -m jeu_de_raccourcis ] -f fichier
bind
[ -m jeu_de_raccourcis ] -x
suite_de_touches
: commande_de_l’interprĂ©teur
bind
[ -m jeu_de_raccourcis ] suite_de_touches : nom_de_fonction
bind
[ -m jeu_de_raccourcis ] suite_de_touches : commande_readline
bind
readline-command-line

Afficher les associations de touches readline actuelles et les raccourcis de fonctions, associer une suite de touches Ă  une fonction ou une macro readline ou crĂ©er une variable readline . Chaque argument qui n’est pas une option est une commande comme elle devrait apparaĂźtre dans un fichier d’initialisation de readline tel que .inputrc , mais chaque raccourci ou commande doit ĂȘtre fourni comme un argument indĂ©pendant ; par exemple « "\C-x\C-r": re-read-init-file ». Les options, si fournies, ont les significations suivantes :
-m
jeu_de_raccourcis

Utiliser le jeu_de_raccourcis comme jeu de raccourcis devant ĂȘtre concernĂ© par les raccourcis ultĂ©rieurs. Les noms de jeu_de_raccourcis possibles sont emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command et vi-insert . vi est Ă©quivalent Ă  vi-command ( vi-move est aussi un synonyme) ; emacs est Ă©quivalent Ă  emacs-standard .

-l

Afficher la liste des noms de toutes les fonctions readline .

-p

Afficher les noms des fonctions readline et leurs raccourcis de façon à pouvoir les relire.

-P

Afficher les noms des fonctions readline et leurs raccourcis.

-s

Afficher les suites de touches readline associées aux macros et les chaßnes correspondantes, de façon à pouvoir les relire.

-S

Afficher les suites de touches readline associées aux macros et les chaßnes correspondantes.

-v

Afficher les noms des variables readline et leurs valeurs de façon à pouvoir les relire.

-V

Afficher les noms des variables readline et leurs valeurs.

-f fichier

Lire les raccourcis clavier dans fichier .

-q fonction

Rechercher les touches permettant d’appeler la fonction indiquĂ©e.

-u fonction

Dissocier toutes les touches associées à fonction .

-r suite_de_touches

Supprimer tout raccourci actuel pour la suite_de_touches .

-x suite_de_touches : commande_de_l’interprĂ©teur

Conduire la commande_de_l’interprĂ©teur Ă  ĂȘtre exĂ©cutĂ©e chaque fois que la suite_de_touches est saisie. Quand la commande_de_l’interprĂ©teur est exĂ©cutĂ©e, l’interprĂ©teur configure la variable READLINE_LINE au contenu du tampon de ligne de readline et les variables READLINE_POINT et READLINE_MARK Ă  la position actuelle du curseur d’insertion et du point d’insertion sauvegardĂ© (la marque) respectivement. L’interprĂ©teur affecte tout argument numĂ©rique fourni par l’utilisateur Ă  la variable READLINE_ARGUMENT . S’il n’y a pas d’argument, la variable n’existe pas. Si la commande exĂ©cutĂ©e modifie les valeurs de READLINE_LINE , READLINE_POINT ou READLINE_MARK , ces nouvelles valeurs seront prises en considĂ©ration dans l’état d’édition.

-X

Afficher toutes les suites de touches associĂ©es aux commandes de l’interprĂ©teur et aux commandes associĂ©es pour pouvoir ĂȘtre rĂ©utilisĂ©es en entrĂ©e.

La valeur renvoyĂ©e est 0 , Ă  moins qu’une option inconnue ne soit indiquĂ©e ou qu’une erreur ne se soit produite.

break [ n ]

Sortir d’une boucle for , while , until ou select . Si n est indiquĂ©, sortir de n niveaux de boucles. n doit ĂȘtre ≄ 1. Si n est supĂ©rieur au nombre de boucles imbriquĂ©es, sortir de toutes les boucles. La valeur renvoyĂ©e est 0 , Ă  moins que n ne soit pas supĂ©rieur ou Ă©gal Ă  1 .

builtin commande_interne [ arguments ]

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

caller [ expr ]

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

cd [ -L |[ -P [ -e ]] [-@]] [ rép ]

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

command [ -pVv ] commande [ arguments ...]

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

compgen [ option ] [ mot ]

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

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

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

complete [ -abcdefgjksuv ] [ -o option-complĂštement ] [ -DEI ] [ -A action ]
[ -G globpat ] [ -W liste_de_mots ]

[ -F fonction ] [ -C commande ] [ -X motif_filtre ] [ -P préfixe ] [ -S suffixe ] nom [ nom ...]

complete -pr [ -DEI ] [ nom ...]

Indiquer la façon de complĂ©ter les arguments de chaque nom . Si l’option -p est fournie ou si aucune option n’est fournie, les spĂ©cifications de complĂštement existantes sont affichĂ©es de telle façon qu’elles puissent ĂȘtre rĂ©utilisĂ©es comme entrĂ©e. L’option -r retire une spĂ©cification de complĂštement Ă  chaque nom fourni ou, si aucun nom n’est fourni, toutes les spĂ©cifications de complĂštement. L’option -D indique que les options restantes et les actions devraient s’appliquer au complĂštement de commande par « dĂ©faut », c’est-Ă -dire le complĂštement essayĂ© sur une commande pour laquelle aucun complĂštement n’a Ă©tĂ© prĂ©alablement dĂ©fini. L’option -E indique que les options restantes et les actions devraient s’appliquer au complĂštement de commande « vide », c’est-Ă -dire le complĂštement essayĂ© sur une ligne vide. L’option -I indique que les options restantes et les actions devraient s’appliquer au complĂštement du premier mot de non affectation de la ligne ou aprĂšs un dĂ©limiteur de commande ; ou | , ce qui est habituellement le complĂštement d’un nom de commande. Si plusieurs options sont fournies, l’option -D prend la prĂ©sĂ©ance sur -E et les deux prennent la prĂ©sĂ©ance sur -I . Si une des -options -D , -E ou -I est fournie, tous les autres arguments de nom sont ignorĂ©s ; ces complĂštements ne s’appliquent qu’au cas prĂ©cisĂ© par l’option.

Le processus d’application de ces spĂ©cifications de complĂštement, lorsqu’un complĂštement de mot est tentĂ©, est dĂ©crit above under Programmable Completion .

Les autres options, si indiquĂ©es, ont les significations suivantes. Les arguments des options -G , -W et -X (et, si nĂ©cessaire, les options -P et -S ) devraient ĂȘtre protĂ©gĂ©es pour Ă©viter leur dĂ©veloppement avant que la commande interne complete ne soit appelĂ©e.
-o
option-complĂštement

L’ option-complĂštement commande plusieurs aspects du comportement des spĂ©cifications de complĂštement au-delĂ  de la simple production de complĂštement. option-complĂštement peut ĂȘtre l’une des suivantes :
bashdefault

Effectuer le reste des complÚtements par défaut de bash si la spécification de complÚtement ne produit aucune correspondance.

default

Utiliser le complÚtement de nom de fichier par défaut de readline si la spécification de complÚtement ne produit aucune correspondance.

dirnames

Effectuer le complÚtement de nom de répertoire si la spécification de complÚtement ne produit aucune correspondance.

filenames

Indiquer Ă  readline que la spĂ©cification de complĂštement produit des noms de fichiers, ainsi il peut effectuer tout traitement spĂ©cifique aux noms de fichiers (comme ajouter une barre oblique aux noms de rĂ©pertoires, protĂ©ger les caractĂšres spĂ©ciaux ou supprimer les espaces de fin de ligne). DestinĂ©e Ă  ĂȘtre utilisĂ©e avec les fonctions de l’interprĂ©teur.

noquote

Indiquer Ă  readline de protĂ©ger les mots complĂ©tĂ©s s’il s’agit de noms de fichier (la protection des noms de fichier est par dĂ©faut).

nosort

Indiquer à readline de ne pas trier par ordre alphabétique la liste des complÚtements possibles.

nospace

Indiquer à readline de ne pas ajouter une espace (comportement par défaut) aux mots complétés en fin de ligne.

plusdirs

AprÚs création de toutes les correspondances définies par la spécification de complÚtement, une tentative de complÚtement de nom de répertoire est effectuée et toutes les correspondances sont ajoutées aux résultats des autres actions.

-A action

L’ action peut ĂȘtre l’une des suivantes pour produire une liste des complĂštements possibles :

alias

Noms d’alias. Peut Ă©galement ĂȘtre indiquĂ©e avec -a .

arrayvar

Noms de variable de type tableau.

binding

Noms de raccourci clavier readline .

builtin

Noms de commandes internes de l’interprĂ©teur. Peut Ă©galement ĂȘtre indiquĂ©e avec -b .

command

Noms de commande. Peut Ă©galement ĂȘtre indiquĂ©e avec -c .

directory

Noms de rĂ©pertoire. Peut Ă©galement ĂȘtre indiquĂ©e avec -d .

disabled

Noms de commandes internes de l’interprĂ©teur dĂ©sactivĂ©es.

enabled

Noms de commandes internes de l’interprĂ©teur activĂ©es.

export

Noms de variables de l’interprĂ©teur exportĂ©es. Peut Ă©galement ĂȘtre indiquĂ©e avec -e .

file

Noms de fichier. Peut Ă©galement ĂȘtre indiquĂ©e avec -f .

function

Noms de fonctions de l’interprĂ©teur.

group

Noms de groupe. Peut Ă©galement ĂȘtre indiquĂ©e avec -g .

helptopic

Sujets de l’aide acceptĂ©s par la commande interne help .

hostname

Noms de machine tels qu’ils sont extraits du fichier indiquĂ© par la variable de l’interprĂ©teur HOSTFILE .

job

Noms de tĂąche si le contrĂŽle des tĂąches est actif. Peut Ă©galement ĂȘtre indiquĂ©e avec -j .

keyword

Mots rĂ©servĂ©s de l’interprĂ©teur. Peut Ă©galement ĂȘtre indiquĂ©e avec -k .

running

Noms de tĂąches en cours d’exĂ©cution si le contrĂŽle des tĂąches est actif.

service

Noms de service. Peut Ă©galement ĂȘtre indiquĂ©e avec -s .

setopt

Arguments corrects de l’option -o de la commande interne set .

shopt

Noms des options d’interprĂ©teur acceptĂ©es par la commande interne shopt .

signal

Noms de signaux.

stopped

Noms de tĂąches suspendues si le contrĂŽle des tĂąches est actif.

user

Noms d’utilisateur. Peut Ă©galement ĂȘtre indiquĂ©e avec -u .

variable

Noms de toutes les variables de l’interprĂ©teur. Peut Ă©galement ĂȘtre indiquĂ©e avec -v .

-C commande

La commande est exécutée dans un environnement de sous-interpréteur et sa sortie est utilisée comme complÚtements possibles. Les arguments sont fournis comme avec la fonction -F .

-F fonction

La fonction de l’interprĂ©teur est exĂ©cutĂ©e dans l’interprĂ©teur actuel. Lorsqu’une fonction est exĂ©cutĂ©e, le premier argument ( $1 ) est le nom de la commande dont les arguments doivent ĂȘtre complĂ©tĂ©s, le deuxiĂšme argument ( $2 ) est le mot Ă  complĂ©ter et le troisiĂšme argument ( $3 ) est le mot prĂ©cĂ©dant celui devant ĂȘtre complĂ©tĂ© sur la ligne de commande actuelle. Lorsqu’elle finit, les complĂštements possibles sont rĂ©cupĂ©rĂ©s Ă  partir de la valeur de la variable de type tableau COMPREPLY .

-G globpat

Le motif de développement des chemins globpat est développé pour produire les complÚtements possibles.

-P préfixe

préfixe est ajouté au début de chaque complÚtement possible aprÚs application de toutes les autres options.

-S suffixe

suffixe est ajouté à chaque complÚtement possible aprÚs application de toutes les autres options.

-W liste_de_mots

La liste_de_mots est dĂ©coupĂ©e en utilisant les caractĂšres de la variable spĂ©ciale IFS comme dĂ©limiteurs et chaque mot rĂ©sultant est dĂ©veloppĂ©. Les protections de l’interprĂ©teur sont prises en compte Ă  l’intĂ©rieur de la liste_de_mots , afin de fournir un mĂ©canisme pour que les mots puissent contenir des mĂ©tacaractĂšres ou des caractĂšres de l’interprĂ©teur dans la valeur de IFS . Les complĂštements possibles sont les Ă©lĂ©ments de la liste rĂ©sultante qui correspondent au mot en cours de complĂštement.

-X motif_filtre

motif_filtre est un motif utilisé pour le développement des chemins. Il est appliqué à la liste des complÚtements possibles produite par les options et arguments précédents et chaque complÚtement correspondant à motif_filtre est supprimé de la liste. Un ! au début du motif_filtre inverse le motif ; dans ce cas, tout complÚtement qui ne correspond pas à motif_filtre est supprimé.

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

compopt [ -o option ] [ -DEI ] [ +o option ] [ nom ]

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

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

continue [ n ]

Reprendre l’exĂ©cution Ă  l’itĂ©ration suivante d’une boucle for , while , until ou encore select . Si n est indiquĂ©, reprendre l’exĂ©cution Ă  la n -iĂšme boucle imbriquĂ©e. n doit ĂȘtre ≄ 1. Si n est supĂ©rieur au nombre de boucles imbriquĂ©es, l’exĂ©cution reprend Ă  la boucle la plus externe (la boucle « au sommet »). La valeur renvoyĂ©e est 0 , Ă  moins que n ne soit supĂ©rieur ou Ă©gal Ă  1 .

declare [ -aAfFgiIlnrtux ] [ -p ] [ nom [ = valeur ] ...]
typeset
[ -aAfFgiIlnrtux ] [ -p ] [ nom [ = valeur ] ...]

DĂ©clarer des variables ou leur fournir des attributs. Si aucun nom n’est indiquĂ©, afficher les valeurs des variables. L’option -p affichera les attributs et les valeurs de chaque nom . Quand -p est utilisĂ©e avec des arguments nom , les options supplĂ©mentaires, Ă  part -f et -F , sont ignorĂ©es. Quand -p est fourni sans argument nom , les attributs et valeurs de toutes les variables ayant des attributs indiquĂ©s par les options additionnelles seront affichĂ©s. Si aucune autre option n’est fournie avec -p , declare affichera les attributs et valeurs de toutes les variables de l’interprĂ©teur. L’option -f limite l’affichage aux fonctions de l’interprĂ©teur. L’option -F empĂȘche l’affichage des dĂ©finitions de fonctions : seuls le nom de la fonction et ses attributs sont affichĂ©s. Si l’option d’interprĂ©teur extdebug est activĂ©e en utilisant shopt , le nom du fichier source et le numĂ©ro de ligne oĂč chaque nom est dĂ©fini sont aussi affichĂ©s. L’option -F implique -f . L’option -g force la crĂ©ation ou la modification de variables avec une portĂ©e globale, mĂȘme si declare est exĂ©cutĂ©e dans une fonction de l’interprĂ©teur. Elle est ignorĂ©e dans tous les autres cas. L’option -I fait que les variables locales hĂ©ritent des attributs (sauf de l’attribut nameref ) et prennent la valeur de n’importe quelle variable existante du mĂȘme nom dans son environnement. S’il n’y a pas de variable existante, la variable locale est dĂ©truite dans un premier temps. Les options suivantes permettent de restreindre l’affichage aux variables dotĂ©es de certains attributs ou de configurer les attributs des variables :

-a

Chaque nom est une variable de type tableau indicé (consultez Tableaux ). above).

-A

Chaque nom est une variable de type tableau associatif (consultez Tableaux ). above).

-f

Utiliser seulement les noms de fonctions.

-i

La variable est traitĂ©e comme un entier ; l’évaluation arithmĂ©tique (consultez ÉVALUATION ARITHMÉTIQUE above) est effectuĂ©e lorsqu’une valeur est affectĂ©e Ă  la variable.

-l

Quand cette variable contient une valeur, toutes les majuscules seront converties en minuscules. L’attribut majuscule est dĂ©sactivĂ©.

-n

Donner Ă  chaque nom l’attribut nameref , le rendant une rĂ©fĂ©rence de nom vers une autre variable. Cette autre variable est dĂ©finie par la valeur de nom . Toutes les rĂ©fĂ©rences, les affectations et les modifications d’attribut de nom , Ă  part celles qui utilisent ou modifient l’attribut -n lui-mĂȘme, sont rĂ©alisĂ©es sur la variable rĂ©fĂ©rencĂ©e par la valeur de nom . L’attribut -nameref ne peut pas ĂȘtre appliquĂ© aux variables de type tableau.

-r

Rendre les nom s accessibles en lecture seule. Plus aucune valeur ne pourra leur ĂȘtre affectĂ©e et ils ne pourront plus ĂȘtre dĂ©truits.

-t

Donner Ă  chaque nom l’attribut trace . Les fonctions tracĂ©es hĂ©ritent des captures de DEBUG et RETURN de l’interprĂ©teur appelant. L’attribut trace n’a pas de signification spĂ©ciale pour les variables.

-u

Quand cette variable contient une valeur, toutes les minuscules seront converties en majuscules. L’attribut minuscule est dĂ©sactivĂ©.

-x

Marquer les nom s pour qu’ils soit exportĂ©s dans l’environnement des commandes ultĂ©rieures.

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

dirs [ -clpv ] [ + n ] [ - n ]

Sans option, afficher la liste des rĂ©pertoires actuellement mĂ©morisĂ©s. L’affichage par dĂ©faut est rĂ©alisĂ© sur une seule ligne, les noms de rĂ©pertoires Ă©tant sĂ©parĂ©s par des espaces. Les rĂ©pertoires sont ajoutĂ©s Ă  la liste avec la commande pushd et supprimĂ©s avec la commande popd . Le rĂ©pertoire courant est toujours le premier rĂ©pertoire de la pile.

-c

Effacer la liste des répertoires en les supprimant tous.

-l

Produire une liste en utilisant les chemins complets ; le format d’affichage par dĂ©faut utilise le tilde pour reprĂ©senter le rĂ©pertoire d’accueil.

-p

Afficher la pile des répertoires avec un élément par ligne.

-v

Afficher la pile des rĂ©pertoires avec un Ă©lĂ©ment par ligne, en prĂ©fixant chaque entrĂ©e avec son numĂ©ro d’indice dans la pile.

+ n

Afficher le n -iĂšme Ă©lĂ©ment de la liste fournie par dirs , lorsqu’appelĂ© sans options, en comptant Ă  partir de la gauche en commençant Ă  zĂ©ro.

- n

Afficher le n -iĂšme Ă©lĂ©ment de la liste fournie par dirs , lorsqu’appelĂ© sans options, en comptant Ă  partir de la droite en commençant Ă  zĂ©ro.

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

disown [ -ar ] [ -h ] [ tĂąche ... | pid ... ]

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

echo [ -neE ] [ arguments ...]

Afficher les arguments , sĂ©parĂ©s par des espaces, suivis par un saut de ligne. La valeur renvoyĂ©e est 0 sauf en cas d’erreur. Si -n est indiquĂ©, le changement de ligne final est supprimĂ©. Si l’option -e est indiquĂ©e, l’interprĂ©tation des caractĂšres de protection suivants par une contre-oblique est activĂ©e. L’option -E dĂ©sactive l’interprĂ©tation de ces caractĂšres de protection, mĂȘme sur les systĂšmes oĂč ils sont interprĂ©tĂ©s par dĂ©faut. L’option d’interprĂ©teur xpg_echo peut ĂȘtre utilisĂ©e dynamiquement pour dĂ©terminer si echo dĂ©veloppe ou non par dĂ©faut ces caractĂšres de protection. echo n’interprĂšte pas -- comme signifiant la fin des options. echo reconnaĂźt les suites de caractĂšres de protection suivants :

\a

alerte (alarme) ;

\b

espace arriĂšre

\c

supprime tout affichage suivant ;

\e

\E

caractÚre de protection ;

\f

saut de page (« form feed ») ;

\n

saut de ligne (« new line ») ;

\r

retour chariot

\t

tabulation horizontale

\v

tabulation verticale

\\

contre-oblique ;

\0 nnn

le caractÚre 8 bits dont la valeur en octal est nnn (zéro à trois chiffres octaux) ;

\x HH

le caractÚre 8 bits dont la valeur hexadécimale est HH (un ou deux chiffres hexadécimaux) ;

\u HHHH

le caractÚre Unicode (ISO/IEC 10646) dont la valeur hexadécimale est HHHH (un à quatre chiffres hexadécimaux) ;

\U HHHHHHHH

le caractÚre Unicode (ISO/IEC 10646) dont la valeur hexadécimale est HHHHHHHH (un à huit chiffres hexadécimaux) ;

enable [ -a ] [ -dnps ] [ -f fichier ] [ nom ...]

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

eval [ arguments ...]

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

exec [ -cl ] [ -a nom ] [ commande [ arguments ]]

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

exit [ n ]

Termine l’interprĂ©teur avec un Ă©tat de n . Si n est omis, l’état final est celui de la derniĂšre commande exĂ©cutĂ©e. Une capture sur EXIT est exĂ©cutĂ©e avant que l’interprĂ©teur ne se termine.

export [ -fn ] [ nom [= mot ]] ...
export -p

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

fc [ -e éditeur ] [ -lnr ] [ premiÚre ] [ derniÚre ]
fc -s
[ motif = nouveau ] [ commande ]

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

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

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

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

fg [ tĂąche ]

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

getopts chaĂźne_d_options nom [ arguments ... ]

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

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

getopts analyse en principe les paramĂštres positionnels, mais si plus d’arguments sont indiquĂ©s comme valeur d’ arguments , getopts analysera ces derniers Ă  la place.

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

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

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

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

hash [ -lr ] [ -p fichier ] [ -dt ] [ nom ]

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

help [ -dms ] [ motif ]

Afficher des informations d’aide au sujet des commandes internes. Si un motif est indiquĂ©, help fournit de l’aide sur toutes les commandes internes correspondant Ă  ce motif , sinon, une liste des commandes internes et des structures de contrĂŽle de l’interprĂ©teur est affichĂ©e.

-d

Afficher une courte description de chaque motif .

-m

Afficher la description de chaque motif dans un format du type pages de manuel.

-s

Afficher seulement un court synopsis d’utilisation de chaque motif .

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

history [ n ]
history -c
history -d
nombre
history -d
début - fin
history -anrw
[ fichier ]
history -p
argument [ argument ... ]
history -s
argument [ argument ... ]

Sans options, afficher la liste des commandes de la file d’historique, avec les numĂ©ros de ligne. Les lignes marquĂ©es avec un * ont Ă©tĂ© modifiĂ©es. Un argument n permet de n’afficher que les n derniĂšres lignes. Si la variable de l’interprĂ©teur HISTTIMEFORMAT existe et n’est pas NULL, elle est utilisĂ©e comme chaĂźne de format pour strftime (3) afin d’afficher l’horodatage associĂ© Ă  chaque Ă©lĂ©ment de l’historique. Aucun blanc ne sĂ©pare l’horodatage ainsi mis en forme de la ligne d’historique. Si un argument fichier est fourni, il est utilisĂ© comme nom de fichier d’historique ; sinon la valeur de HISTFILE est utilisĂ©e. Les options, si fournies, ont les significations suivantes :

-c

Effacer la file de l’historique en supprimant tous les Ă©lĂ©ments.

-d nombre

Supprimer l’entrĂ©e d’historique Ă  la position nombre . Si nombre estnĂ©gatif, il est interprĂ©tĂ© comme relatif Ă  un nombre plus grand que celui de la derniĂšre position de l’historique, ainsi les indices nĂ©gatifs comptent Ă  rebours depuis la fin de l’historique et un indice -1 fait rĂ©fĂ©rence Ă  la commande history -d actuelle.

-d début - fin

Supprimer la plage d’entrĂ©es d’historique entre les positions dĂ©but et fin incluses. Les valeurs positives et nĂ©gatives pour dĂ©but et fin sont interprĂ©tĂ©es comme dĂ©crites ci-dessus.

-a

Ajouter les « nouvelles » lignes d’historique. Ce sont celles créées depuis le dĂ©but de la session actuelle de bash , mais pas dĂ©jĂ  ajoutĂ©es dans le fichier d’historique.

-n

Lire dans le fichier d’historique les lignes non encore lues et les ajouter Ă  la file d’historique actuelle. Il s’agit des lignes qui ont Ă©tĂ© ajoutĂ©es dans le fichier d’historique depuis le dĂ©but de la session bash .

-r

Lire le contenu du fichier et l’ajouter à l’historique actuel.

-w

Écrire la liste actuelle d’historique dans le fichier d’historique, en Ă©crasant le contenu prĂ©cĂ©dent.

-p

Effectuer la substitution d’historique sur les argument s suivants et afficher le rĂ©sultat sur la sortie standard. Ne pas mĂ©moriser les rĂ©sultats dans la file d’historique. Chaque argument doit ĂȘtre protĂ©gĂ© pour dĂ©sactiver le dĂ©veloppement normal de l’historique.

-s

Conserver les argument s dans la file d’historique comme un unique Ă©lĂ©ment. La derniĂšre commande de la file d’historique est supprimĂ©e avant que les argument s ne soient ajoutĂ©s.

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

jobs [ -lnprs ] [ tĂąche ... ]
jobs -x
commande [ arguments ... ]

La premiÚre forme affiche la liste des tùches actives. Les options ont les significations suivantes :

-l

Afficher les PID, en plus des informations normales.

-n

Afficher uniquement des informations sur les tĂąches dont l’état a changĂ© depuis la derniĂšre notification de leur Ă©tat Ă  l’utilisateur.

-p

Afficher uniquement le PID du meneur du groupe de processus de la tĂąche.

-r

N’afficher que les tĂąches en cours d’exĂ©cution.

-s

N’afficher que les tñches suspendues.

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

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

kill [ -s signal | -n num-signal | - signal ] [ pid | tĂąche ] ...
kill -l
| -L [ signal | état_final ]

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

let argument [ argument ...]

Chaque argument est une expression arithmĂ©tique Ă  Ă©valuer (consultez ÉVALUATION ARITHMÉTIQUE ci-dessus). above). Si l’évaluation du dernier argument donne 0 , let renvoie 1 ; sinon 0 est renvoyĂ©.

local [ option ] [ nom [= valeur ] ...] - ]

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

logout

Terminer un interpréteur de connexion.

mapfile [ -d délimiteur ] [ -n nombre ] [ -O origine ] [ -s nombre ] [ -t ] [ -u
df
] [ -C rappel ] [ -c quantum ] [ tableau ]
readarray
[ -d délimiteur ] [ -n nombre ] [ -O origine ] [ -s nombre ] [ -t ] [ -u
df
] [ -C rappel ] [ -c quantum ] [ tableau ]

Lire les lignes depuis l’entrĂ©e standard dans la variable de type tableau indicĂ© tableau , ou depuis le descripteur de fichier df si l’option -u est fournie. La variable MAPFILE est le tableau par dĂ©faut. Les options, si fournies, ont les significations suivantes :

-d

Le premier caractĂšre de dĂ©limiteur est utilisĂ© pour terminer la ligne de saisie, plutĂŽt qu’un changement de ligne. Si dĂ©limiteur est une chaĂźne vide, mapfile termine une ligne quand il lit un caractĂšre NUL.

-n

Copier au plus nombre lignes. Si nombre est 0, toutes les lignes sont copiées.

-O

Commencer l’affectation de tableau Ă  l’indice origine . L’indice par dĂ©faut est 0 .

-s

Supprimer les nombre premiĂšres lignes lues.

-t

Éliminer un dĂ©limiteur final (par dĂ©faut changement de ligne ) de chaque ligne lue.

-u

Lire les lignes Ă  partir du descripteur de fichier df plutĂŽt que depuis l’entrĂ©e standard.

-C

Évaluer rappel Ă  chaque fois que quantum lignes sont lues. L’option -c prĂ©cise le quantum .

-c

Préciser le nombre de lignes entre chaque appel à rappel .

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

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

mapfile termine avec succĂšs sauf si une option ou un de ses arguments n’est pas valable, ou si tableau n’est pas valable, n’est pas un tableau indicĂ© ou si son affectation est impossible.

popd [ -n ] [ + n ] [ - n ]

Enlever des éléments de la pile des répertoires. Les éléments sont numérotés à partir de 0 avec le premier répertoire listé par dirs . Sans argument popd supprime le répertoire du sommet de la pile et un cd est effectué en direction du nouveau répertoire au sommet. Les arguments, si fournis, ont les significations suivantes :

-n

EmpĂȘcher le changement normal de rĂ©pertoire lors de la suppression d’un rĂ©pertoire de la pile. Seule la pile est manipulĂ©e.

+ n

Supprimer de la pile le n -iĂšme Ă©lĂ©ment de la liste affichĂ©e par dirs , en comptant depuis la gauche Ă  partir de zĂ©ro. Par exemple : ‘‘popd +0’’ enlĂšve le premier rĂ©pertoire, ‘‘popd +1’’ le second.

- n

Supprimer le n -iĂšme Ă©lĂ©ment de la liste affichĂ©e par dirs , en comptant depuis la droite Ă  partir de zĂ©ro. Par exemple : ‘‘popd -0’’ supprime le dernier rĂ©pertoire et ‘‘popd -1’’ l’avant-dernier.

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

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

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

printf [ -v var ] format [ arguments ]

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

Ce format est une chaĂźne de caractĂšres contenant trois types d’objets : les caractĂšres normaux, qui sont simplement copiĂ©s sur la sortie standard, les caractĂšres de protection qui sont convertis puis copiĂ©s sur la sortie standard et les spĂ©cifications de format, qui conduisent chacun Ă  l’affichage des arguments successifs. En plus des spĂ©cifications de format standard de printf (1), printf interprĂšte les extensions suivantes :

%b

conduit printf Ă  dĂ©velopper les suites de caractĂšres de protection dans l’ argument correspondant de la mĂȘme maniĂšre que echo -e .

%q

conduit printf Ă  afficher l’ argument correspondant dans un format rĂ©utilisable en entrĂ©e de l’interprĂ©teur ;

%Q

comme %q , mais applique toute prĂ©cision fournie Ă  l’ argument avant de le protĂ©ger.

%( formatdate )T

conduit printf Ă  afficher la chaĂźne date-heure rĂ©sultant de l’utilisation de formatdate en tant que chaĂźne de format pour strftime (3). L’ argument correspondant est un entier reprĂ©sentant le temps en seconde Ă©coulĂ© depuis epoch. Deux valeurs particuliĂšres d’argument peuvent ĂȘtre utilisĂ©es : -1 reprĂ©sente l’heure actuelle et -2 l’heure Ă  laquelle l’interprĂ©teur a Ă©tĂ© invoquĂ©. Si aucun argument n’est indiquĂ©, la conversion se comporte comme si -1 avait Ă©tĂ© fourni. C’est une exception au comportement habituel de printf .

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

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

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

pushd [ -n ] [+ n ] [- n ]
pushd
[ -n ] [ rép ]

Ajouter un répertoire au sommet de la pile des répertoires ou effectuer une rotation dans la pile, en ramenant le répertoire actuel au sommet. Sans argument, la commande pushd échange les deux éléments au sommet de la pile des répertoires. Les arguments, si fournis, ont les significations suivantes :

-n

EmpĂȘcher le changement normal de rĂ©pertoire lors d’une rotation ou d’un ajout de rĂ©pertoires dans la pile. Ainsi, seule la pile est manipulĂ©e.

+ n

Effectuer une rotation dans la pile, de façon à amener au sommet le n -iÚme répertoire (de la liste affichée par dirs , en comptant depuis la gauche à partir de zéro).

- n

Effectuer une rotation dans la pile, de façon à amener au sommet le n -iÚme répertoire (de la liste affichée par dirs , en comptant depuis la gauche à partir de zéro).

rép

Ajouter répertoire au sommet de la pile des répertoires

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

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

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

pwd [ -LP ]

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

read [ -ers ] [ -a tableau ] [ -d délimiteur ] [ -i texte ] [ -n nb_car ] [ -N
nb_car
] [ -p invite ] [ -t délai ] [ -u df ] [ nom ...]

Une ligne est lue depuis l’entrĂ©e standard ou Ă  partir du descripteur de fichier df fourni en argument Ă  l’option -u , dĂ©coupĂ©e en mots comme dĂ©crit above dans DĂ©coupage en mots , puis le premier mot de cette ligne est affectĂ© au premier nom , le second mot au second nom , et ainsi de suite. S’il y a plus de mots que de noms, les mots restants et leurs sĂ©parateurs intercalaires sont affectĂ©s au dernier nom . S’il y a moins de mots lus dans le flux d’entrĂ©e que de variables, des valeurs vides sont affectĂ©es Ă  celles restantes. Les caractĂšres contenus dans la variable IFS sont utilisĂ©s pour dĂ©couper la ligne en mots en utilisant les mĂȘmes rĂšgles que celles utilisĂ©es par l’interprĂ©teur pour le dĂ©veloppement (dĂ©crites above dans DĂ©coupage en mots ). Le caractĂšre contre-oblique ( \ ) permet de supprimer toute signification spĂ©ciale pour le caractĂšre suivant et autorise la continuation de ligne. Les options, si fournies, ont les significations suivantes :
-a
tableau

Les mots sont affectĂ©s aux indices successifs d’une variable tableau de nom tableau , en commençant Ă  0 . tableau est dĂ©truit avant que de nouvelles valeurs ne soient affectĂ©es. Les autres arguments nom sont ignorĂ©s.

-d délimiteur

Le premier caractĂšre de dĂ©limiteur est utilisĂ© pour terminer la ligne de saisie, plutĂŽt qu’un changement de ligne. Si dĂ©limiteur est une chaĂźne vide, mapfile termine une ligne quand il lit un caractĂšre NUL.

-e

Si l’entrĂ©e standard provient d’un terminal, la bibliothĂšque readline (consultez READLINE above) est utilisĂ©e pour obtenir la ligne. Readline utilise les configurations d’édition en cours (ou par dĂ©faut, si l’édition de ligne n’était pas prĂ©alablement active), mais utilise le complĂštement de nom de fichier par dĂ©faut de readline .

-i texte

Si readline est utilisĂ©e pour lire la ligne, texte est placĂ© dans le tampon d’édition avant le dĂ©but de l’édition.

-n nb_car

read s’arrĂȘte aprĂšs avoir lu nb_car caractĂšres plutĂŽt que d’attendre une ligne complĂšte en entrĂ©e, mais un dĂ©limiteur est respectĂ© si moins de nb_car caractĂšres ont Ă©tĂ© lus avant le dĂ©limiteur.

-N nb_car

read s’arrĂȘte aprĂšs avoir lu exactement nb_car caractĂšres plutĂŽt que d’attendre une ligne complĂšte en entrĂ©e, sauf si une fin de fichier (EOF) est rencontrĂ©e ou si read dĂ©passe son dĂ©lai de rĂ©ponse. Les dĂ©limiteurs rencontrĂ©s en entrĂ©e ne sont pas traitĂ©s spĂ©cialement et n’entraĂźnent pas la fin de read avant que nb_car caractĂšres n’aient Ă©tĂ© lus. Le rĂ©sultat pas dĂ©coupĂ© selon les caractĂšres dans IFS ; le but est que la variable soit exactement des caractĂšres lus (Ă  l’exception du caractĂšre contre-oblique ; consultez ci-dessous l’option -r ).

-p invite

Afficher invite sur la sortie d’erreur standard, sans caractĂšre final de changement de ligne, avant d’essayer de lire toute nouvelle saisie. L’invite est affichĂ©e seulement si l’entrĂ©e vient d’un terminal.

-r

La contre-oblique n’agit pas comme un caractĂšre de protection. La contre-oblique est considĂ©rĂ©e comme faisant partie de la ligne. En particulier, une contre-oblique suivie d’un changement de ligne ne peut pas ĂȘtre considĂ©rĂ©e comme une continuation de ligne.

-s

Mode silencieux. Si une entrĂ©e arrive Ă  partir d’un terminal, les caractĂšres ne sont pas affichĂ©s.

-t m

Conduire read Ă  expirer et renvoyer un Ă©chec si une ligne complĂšte en entrĂ©e (ou un nombre indiquĂ© de caractĂšres) n’a pas Ă©tĂ© lue dans le dĂ©lai en seconde. dĂ©lai est un nombre dĂ©cimal avec Ă©ventuellement des chiffres aprĂšs la virgule (NdT : point en l’occurrence). Cette option n’est effective que si read lit l’entrĂ©e Ă  partir d’un terminal, d’un tube, ou depuis un autre fichier spĂ©cial ; elle n’a aucun effet lors de la lecture d’un fichier normal. Si read expire, read sauvegarde toute entrĂ©e partielle lue dans la variable nom indiquĂ©e. Si dĂ©lai est nul, read se termine immĂ©diatement, sans essayer de lire des donnĂ©es. L’état de sortie est 0 si une entrĂ©e est disponible pour le descripteur de fichier indiquĂ©, ou la lecture renverra EOF , non nulle sinon. L’état final est supĂ©rieur Ă  128 si le dĂ©lai est dĂ©passĂ©.

-u df

Lire l’entrĂ©e Ă  partir du descripteur de fichier df .

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

readonly [ -aAf ] [ -p ] [ nom [ = mot ] ...]

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

return [ n ]

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

set [ -abefhkmnptuvxBCEHPT ] [ -o nom_d_option ] [ -- ] [ - ] [ argument ...]
set
[ +abefhkmnptuvxBCEHPT ] [ +o nom_d_option ] [ -- ] [ - ] [ argument ...]

Sans options, afficher le nom et la valeur de toutes les variables de l’interprĂ©teur dans un format susceptible d’ĂȘtre rĂ©utilisĂ© en entrĂ©e pour crĂ©er ou rĂ©initialiser les variables actuelles. Les variables en lecture seule ne peuvent pas ĂȘtre rĂ©initialisĂ©es. En mode POSIX , seules les variables de l’interprĂ©teur sont affichĂ©es. La sortie est triĂ©e en fonction des paramĂštres linguistiques rĂ©gionaux actuels. Lorsque des options sont indiquĂ©es, elles crĂ©ent ou dĂ©truisent des attributs de l’interprĂ©teur. Tous les argument s restant aprĂšs traitement des options sont considĂ©rĂ©s comme des valeurs pour les paramĂštres positionnels et sont affectĂ©s, dans l’ordre, à : $1 , $2 , ... $ n . Les options, si indiquĂ©es, ont les significations suivantes :

-a

Donner l’attribut export aux variables et fonctions créées ou modifiĂ©es et les marquer pour qu’elles soient exportĂ©es dans l’environnement des commandes exĂ©cutĂ©es ultĂ©rieurement.

-b

Signaler l’état des tĂąches terminĂ©es en arriĂšre-plan immĂ©diatement, plutĂŽt que d’attendre l’affichage de la prochaine invite de base. N’est effectif que si le contrĂŽle des tĂąches est activĂ©.

-e

Se terminer immĂ©diatement si un pipeline (qui peut ĂȘtre rĂ©duit Ă  une unique commande simple ), une liste ou une commande composĂ©e (consultez GRAMMAIRE DE L’INTERPRÉTEUR above), se termine avec un Ă©tat diffĂ©rent de zĂ©ro. L’interprĂ©teur ne se termine pas si la commande qui Ă©choue fait partie d’une liste de commandes suivant immĂ©diatement un mot clef while ou until , d’un test suivant les mots rĂ©servĂ©s if ou elif , d’une commande exĂ©cutĂ©e dans une liste && ou || sauf si la commande est situĂ©e aprĂšs le dernier && ou || , d’une commande de pipeline Ă  l’exception de la derniĂšre, ou si la valeur renvoyĂ©e par la commande est inversĂ©e par ! . Si une commande composĂ©e autre qu’un sous-interprĂ©teur renvoie un Ă©tat non nul parce qu’une commande Ă©choue alors que -e Ă©tait ignorĂ©, l’interprĂ©teur ne se termine pas. Une capture sur ERR , si existante, est exĂ©cutĂ©e avant que l’interprĂ©teur ne se termine. Cette option s’applique Ă  l’environnement de l’interprĂ©teur ainsi qu’à l’environnement de chaque sous-interprĂ©teur individuellement (consultez ENVIRONNEMENT D’EXÉCUTION DES COMMANDES above), et peut conduire des sous-interprĂ©teurs Ă  se terminer avant d’y avoir exĂ©cutĂ© toutes les commandes.

Si une commande composĂ©e ou une fonction de l’interprĂ©teur s’exĂ©cutent dans un contexte oĂč -e est ignorĂ©, aucune des commandes exĂ©cutĂ©es dans une commande composĂ©e ou dans un corps de fonction ne sera affectĂ©e par le rĂ©glage -e , mĂȘme si -e est dĂ©fini et qu’une commande renvoie un Ă©tat d’échec. Si une commande composĂ©e ou une fonction de l’interprĂ©teur dĂ©finissent -e pendant son exĂ©cution dans un contexte oĂč -e est ignorĂ©, ce rĂ©glage n’aura aucun effet avant la fin de la commande composĂ©e ou de la commande contenant l’appel de fonction.

-f

Désactiver le développement des chemins.

-h

MĂ©moriser l’emplacement des commandes lors de leur exĂ©cution. ActivĂ©e par dĂ©faut.

-k

Tous les arguments sous la forme d’affectations sont placĂ©s dans l’environnement d’une commande, et non pas seulement ceux qui prĂ©cĂšdent le nom de la commande.

-m

Mode supervision. Le contrĂŽle des tĂąches est activĂ©. Cette option est activĂ©e par dĂ©faut pour les interprĂ©teurs interactifs sur les systĂšmes qui le permettent (consultez CONTRÔLE DES TÂCHES above). Tous les processus sont exĂ©cutĂ©s dans un groupe de processus sĂ©parĂ©. Quand une tĂąche en arriĂšre-plan se termine, l’interprĂ©teur affiche une ligne contenant son Ă©tat final.

-n

Lecture de commandes sans exĂ©cution. Cela peut ĂȘtre utilisĂ© pour rechercher les erreurs de syntaxe dans un script. Cette option est ignorĂ©e par les interprĂ©teurs interactifs.

-o nom_d_option

Le nom_d_option est l’un des suivants :
allexport

Identique Ă  -a .

braceexpand

Identique Ă  -B .

emacs

Utiliser une interface d’édition des lignes de commande « à la Emacs ». C’est le comportement activĂ© par dĂ©faut quand l’interprĂ©teur est interactif, sauf si l’interprĂ©teur est dĂ©marrĂ© avec l’option --noediting . L’interface d’édition utilisĂ©e par read -e est modifiĂ©e Ă©galement.

errexit

Identique Ă  -e .

errtrace

Identique Ă  -E .

functrace

Identique Ă  -T .

hashall

Identique Ă  -h .

histexpand

Identique Ă  -H .

history

Activer l’historique des commandes, comme dĂ©crit above dans HISTORY . Cette option est activĂ©e par dĂ©faut dans les interprĂ©teurs interactifs.

ignoreeof

Identique Ă  l’exĂ©cution de la commande d’interprĂ©teur ‘‘IGNOREEOF=10’’ a Ă©tĂ© exĂ©cutĂ©e (consultez Variables de l’interprĂ©teur above).

keyword

Identique Ă  -k .

monitor

Identique Ă  -m .

noclobber

Identique Ă  -C .

noexec

Identique Ă  -n .

noglob

Identique Ă  -f .

nolog

Actuellement ignorée.

notify

Identique Ă  -b .

nounset

Identique Ă  -u .

onecmd

Identique Ă  -t .

physical

Identique Ă  -P .

pipefail

Si existante, la valeur renvoyée par un pipeline est la valeur de la derniÚre commande (la plus à droite) à terminer avec un état final différent de zéro ou zéro si toutes les commandes du pipeline terminent avec succÚs. Désactivée par défaut.

posix

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

privileged

Identique Ă  -p .

verbose

Identique Ă  -v .

vi

Utiliser une interface d’édition des lignes de commande « à la vi ». L’interface d’édition utilisĂ©e par read -e est modifiĂ©e Ă©galement.

xtrace

Identique Ă  -x .

Si -o est fournie sans nom_d_option , les valeurs actuelles des options sont affichĂ©es. Si +o est fournie sans nom_d_option , la sĂ©rie de commandes set permettant de recrĂ©er la configuration actuelle d’options est affichĂ©e sur la sortie standard.

-p

Basculer en mode privilĂ©giĂ© . Dans ce mode, les fichiers $ENV et $BASH_ENV ne sont pas traitĂ©s, les fonctions de l’interprĂ©teur ne sont pas hĂ©ritĂ©es de l’environnement, et les variables SHELLOPTS , BASHOPTS , CDPATH , et GLOBIGNORE , si prĂ©sentes dans l’environnement, sont ignorĂ©es. Si l’interprĂ©teur dĂ©marre avec un UID (ou respectivement un GID) effectif diffĂ©rent de son UID (GID) rĂ©el et si l’option -p n’est pas fournie, ce comportement est appliquĂ© et l’UID (GID) effectif est positionnĂ© Ă  l’UID (GID) rĂ©el. Si l’option -p est fournie au dĂ©marrage, l’UID (GID) effectif n’est pas modifiĂ©. DĂ©sactiver cette option conduit Ă  la configuration des UID et GID effectifs Ă  la valeur des UID et GID rĂ©els.

-r

Activer le mode interprĂ©teur restreint. Cette option ne peut ĂȘtre annulĂ©e une fois qu’elle a Ă©tĂ© dĂ©finie.’

-t

Terminer aprĂšs lecture et exĂ©cution d’une commande.

-u

ConsidĂ©rer les variables inexistantes et les paramĂštres diffĂ©rents des paramĂštres spĂ©ciaux « @ » et « * », ou les variables tableau indicĂ©es par @ ou * , comme des erreurs lors du dĂ©veloppement des paramĂštres. Si un dĂ©veloppement de variable inexistante ou de paramĂštre est tentĂ©, l’interprĂ©teur affiche un message d’erreur et, s’il n’est pas interactif, termine avec un Ă©tat diffĂ©rent de zĂ©ro.

-v

Afficher les lignes en entrĂ©e de l’interprĂ©teur lorsqu’elles sont lues.

-x

AprÚs le développement de chaque commande simple , commande for , commande case , commande select ou commande for arithmétique, afficher la valeur développée de PS4 , suivie de la commande et ses arguments développés ou la liste de mots associés.

-B

L’interprĂ©teur effectue le dĂ©veloppement des accolades (consultez DĂ©veloppement des accolades above). ActivĂ©e par dĂ©faut.

-C

Si configurĂ©e, bash n’écrasera pas un fichier existant avec les opĂ©rateurs > , >& et <> . Ce comportement peut ĂȘtre surpassĂ© lors de la crĂ©ation d’un fichier de sortie en utilisant l’opĂ©rateur de redirection >| Ă  la place de > .

-E

Si configurĂ©e, toute capture sur ERR est hĂ©ritĂ©e par les fonctions d’interprĂ©teur, les substitutions de commandes et les commandes exĂ©cutĂ©es dans un sous-interprĂ©teur. La capture de ERR n’est normalement pas hĂ©ritĂ©e dans de tels cas.

-H

Activer le style ! de substitution d’historique. C’est le comportement par dĂ©faut lorsque l’interprĂ©teur est interactif.

-P

Si configurĂ©e, l’interprĂ©teur ne rĂ©sout pas les liens symboliques en exĂ©cutant des commandes comme cd qui modifient le rĂ©pertoire de travail. Il utilise Ă  la place le rĂ©pertoire physique. Par dĂ©faut bash suit la chaĂźne logique des rĂ©pertoires lors des commandes qui modifient le rĂ©pertoire actuel.

-T

Si configurĂ©e, toutes les captures de DEBUG et RETURN sont hĂ©ritĂ©es par les fonctions de l’interprĂ©teur, les substitutions de commande et les commandes exĂ©cutĂ©es dans un sous-interprĂ©teur. Les captures de DEBUG et RETURN ne sont normalement pas hĂ©ritĂ©es dans de tels cas.

--

Si aucun argument ne suit cette option, alors les paramĂštres positionnels sont dĂ©truits. Sinon, les paramĂštres positionnels sont configurĂ©s aux arguments , mĂȘme si certains d’entre eux commencent par un - .

-

Marquer la fin des options, tous les arguments restants sont alors affectĂ©s aux paramĂštres positionnels. Les options -x et -v sont dĂ©sactivĂ©es. S’il n’y a pas d’ arguments , les paramĂštres positionnels ne sont pas modifiĂ©s.

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

shift [ n ]

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

shopt [ -pqsu ] [ -o ] [ nom_opt ...]

Basculer la valeur des rĂ©glages contrĂŽlant le comportement de gestion des options de l’interprĂ©teur. Les rĂ©glages peuvent soit ĂȘtre ceux ci-dessous, soit, si l’option -o est utilisĂ©e, ceux disponibles avec l’option -o de la commande interne set . Sans option ou avec l’option -p , une liste de toutes les options configurables est affichĂ©e, avec l’indication de l’état de chacune d’entre elles ; si des nom_opt sont fournis, la sortie est limitĂ©e Ă  ces options. L’option -p conduit Ă  un affichage de la sortie sous une forme susceptible d’ĂȘtre rĂ©utilisĂ©e en entrĂ©e. Les autres options ont les significations suivantes :

-s

Activer (créer) chaque nom_opt .

-u

Désactiver (détruire) chaque nom_opt .

-q

Supprimer la sortie normale (mode silencieux) ; l’état renvoyĂ© indique si nom_opt est existante ou non. Si plusieurs arguments nom_opt sont indiquĂ©s avec -q , l’état renvoyĂ© est zĂ©ro si tous les nom_opt sont activĂ©s ; diffĂ©rent de zĂ©ro sinon.

-o

Restreindre les valeurs de nom_opt Ă  celles dĂ©finies pour l’option -o de la commande interne set .

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

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

La liste des options shopt est :
assoc_expand_once

Si existante, l’interprĂ©teur supprime les Ă©valuation multiples des indices de tableaux associatifs pendant l’évaluation d’expressions arithmĂ©tiques, lors de l’exĂ©cution de commandes internes qui peuvent affecter des variables et lors de l’exĂ©cution de commandes internes qui rĂ©alisent un dĂ©rĂ©fĂ©rencement de tableau.

autocd

Si existante, un nom de commande qui est le nom d’un rĂ©pertoire est exĂ©cutĂ© comme s’il Ă©tait l’argument de la commande interne cd . Cette option n’est utilisĂ©e que par les interprĂ©teurs interactifs.

cdable_vars

Si existante, un argument de la commande interne cd qui n’est pas un rĂ©pertoire est supposĂ© ĂȘtre un nom de variable dont la valeur est le rĂ©pertoire visĂ©.

cdspell

Si existante, les erreurs minimes de frappe dans un composant du rĂ©pertoire en argument de la commande cd seront corrigĂ©es. Les erreurs corrigĂ©es sont les inversions d’un caractĂšre, un caractĂšre manquant et un caractĂšre en trop. Si une correction est possible, le nom de rĂ©pertoire corrigĂ© est affichĂ© et la commande est exĂ©cutĂ©. Cette option n’est utilisĂ©e que par les interprĂ©teurs interactifs.

checkhash

Si existante, bash vĂ©rifie si une commande trouvĂ©e dans la table de hachage existe avant d’essayer de l’exĂ©cuter. Si une commande hachĂ©e n’existe plus, une recherche normale de chemin est effectuĂ©e.

checkjobs

Si existante, bash affiche la liste des Ă©tats de toutes les tĂąches en cours et arrĂȘtĂ©es avant de terminer un interprĂ©teur interactif. Si des tĂąches sont en cours, la sortie est diffĂ©rĂ©e jusqu’à ce qu’une nouvelle sortie soit tentĂ©e sans commande intermĂ©diaire (consultez CONTRÔLE DES TÂCHES above). L’interprĂ©teur repousse toujours la sortie si des tĂąches sont arrĂȘtĂ©es.

checkwinsize

Si existante, bash vĂ©rifie la taille de la fenĂȘtre aprĂšs chaque commande externe et, au besoin, met Ă  jour les valeurs des variables LINES et COLUMNS .

cmdhist

Si existante, bash essaie de sauvegarder les commandes s’étendant sur plusieurs lignes en un seul Ă©lĂ©ment d’historique. Cela facilite l’édition ultĂ©rieure de commandes multilignes. Cette option est activĂ©e par dĂ©faut, mais n’a un effet que si l’historique des commandes est activĂ©, comme dĂ©crit above dans HISTORY .

compat31
compat32
compat40
compat41
compat42
compat43
compat44
compat50

Ces directives contrĂŽlent les aspects du mode de compatibilitĂ© de l’interprĂ©teur (consultez MODE DE COMPATIBILITÉ DE L’INTERPRÉTEUR below).

complete_fullquote

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

direxpand

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

dirspell

Si existante, bash essaie de corriger les erreurs de frappe sur les noms de rĂ©pertoire lors du complĂštement de mot si le nom de rĂ©pertoire initialement fourni n’existe pas.

dotglob

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

execfail

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

expand_aliases

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

extdebug

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

1.

L’option -F de la commande interne declare affiche le nom du fichier source et le numĂ©ro de ligne correspondant Ă  chaque nom de fonction fourni comme argument.

2.

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

3.

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

4.

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

5.

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

6.

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

extglob

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

extquote

Si existante, la protection par $ ' chaĂźne ' et $ " chaĂźne " est effectuĂ©e Ă  l’intĂ©rieur des dĂ©veloppements de ${ paramĂštres } entre guillemets doubles. Cette option est activĂ©e par dĂ©faut.

failglob

Si existante, les motifs qui Ă©chouent Ă  faire correspondre les noms de fichiers pendant le dĂ©veloppement des chemins font qu’ils provoqueront une erreur de dĂ©veloppement.

force_fignore

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

globasciiranges

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

globskipdots

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

globstar

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

gnu_errfmt

Si existante, les messages d’erreur de l’interprĂ©teur seront Ă©crits dans le format standard GNU des messages d’erreurs.

histappend

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

histreedit

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

histverify

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

hostcomplete

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

huponexit

Si existante, bash enverra un signal SIGHUP Ă  toutes les tĂąches lorsqu’un interprĂ©teur de connexion interactif termine.

inherit_errexit

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

interactive_comments

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

lastpipe

Si existante, et que le contrĂŽle des tĂąches n’est pas activĂ©, l’interprĂ©teur exĂ©cute la derniĂšre commande d’un pipeline non exĂ©cutĂ©e en arriĂšre-plan dans l’environnement d’interprĂ©teur actuel.

lithist

Si existante et si l’option cmdhist est activĂ©e, les commandes multilignes sont sauvegardĂ©es dans l’historique avec des changements de ligne incorporĂ©s comme sĂ©parateurs plutĂŽt que des points-virgules lĂ  oĂč c’est possible.

localvar_inherit

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

localvar_unset

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

login_shell

L’interprĂ©teur crĂ©e cette option s’il est dĂ©marrĂ© en tant qu’interprĂ©teur de connexion (consultez APPEL above). La valeur ne peut ĂȘtre modifiĂ©e.

mailwarn

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

no_empty_cmd_completion

Si existante et si readline est utilisĂ©e, bash n’essaiera pas d’utiliser le PATH pour de possibles complĂštements quand le complĂštement est tentĂ© sur une ligne vide.

nocaseglob

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

nocasematch

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

noexpand_translation

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

nullglob

Si existante, bash autorise les motifs ne correspondant Ă  aucun fichier (consultez DĂ©veloppement des chemins above) Ă  se dĂ©velopper en une chaĂźne NULL plutĂŽt qu’en une valeur littĂ©rale.

patsub_replacement

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

progcomp

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

progcomp_alias

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

promptvars

Si existante, les chaĂźnes d’invite sont sujettes au dĂ©veloppement des paramĂštres, Ă  la substitution de commande, au dĂ©veloppement arithmĂ©tique et Ă  la suppression des protections aprĂšs avoir Ă©tĂ© dĂ©veloppĂ©es comme dĂ©crit dans INVITES . above. Cette option est activĂ©e par dĂ©faut.

restricted_shell

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

shift_verbose

Si existante, la commande interne shift affiche un message d’erreur lorsque le nombre de dĂ©calages dĂ©passe le nombre de paramĂštres positionnels.

sourcepath

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

varredir_close

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

xpg_echo

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

suspend [ -f ]

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

test expr
[
expr ]

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

Les conditions peuvent ĂȘtre combinĂ©es avec les opĂ©rateurs suivant, dĂ©crits par ordre de prioritĂ© dĂ©croissante. L’évaluation dĂ©pend du nombre d’arguments, voir ci-dessous. La prioritĂ© des opĂ©rateurs est utilisĂ©e quand il y a au moins cinq arguments.

! expr

Vrai si expr est fausse.

( expr )

Renvoie la valeur de expr . Peut servir à surpasser la priorité normale des opérateurs.

expr1 -a expr2

Vrai si expr1 et expr2 sont toutes deux vraies.

expr1 -o expr2

Vrai si expr1 ou expr2 est vraie.

test et [ Ă©valuent les conditions en fonction d’un jeu de rĂšgles dĂ©pendant du nombre d’arguments.
0 argument

La condition est fausse.

1 argument

La condition est vraie si et seulement si l’argument n’est pas NULL.

2 arguments

Si le premier argument est ! , la condition est vraie si et seulement si le second argument est NULL. Si le premier argument est l’un des opĂ©rateurs conditionnels unaires dĂ©crits above dans CONDITIONS la condition est vraie si le test unaire est vrai. Si le premier argument n’est pas un opĂ©rateur conditionnel unaire correct, la condition est fausse.

3 arguments

Les conditions suivantes sont appliquĂ©es dans l’ordre de la liste. Si le second argument est l’un des opĂ©rateurs conditionnels binaires dĂ©crits above dans CONDITIONS , le rĂ©sultat de la condition est le rĂ©sultat du test binaire utilisant le premier et le troisiĂšme argument en tant qu’opĂ©randes. Les opĂ©rateurs -a et -o sont considĂ©rĂ©s comme des opĂ©rateurs binaires quand il y a trois arguments. Si le premier argument est ! , la valeur est la nĂ©gation du test binaire utilisant les deuxiĂšme et troisiĂšme arguments. Si le premier argument est exactement ( et le troisiĂšme argument est exactement ) , le rĂ©sultat est le test unaire du second argument. Sinon la condition est fausse.

4 arguments

Les conditions suivantes sont appliquĂ©es dans l’ordre de la liste. Si le premier argument est ! , le rĂ©sultat est la nĂ©gation de l’expression ternaire composĂ©e des arguments restants, le test binaire utilisant les deuxiĂšme et troisiĂšme arguments. Si le premier argument est exactement ( et le quatriĂšme argument est exactement ) , le rĂ©sultat est le test binaire des deuxiĂšme et troisiĂšme arguments. Sinon la condition est analysĂ©e et Ă©valuĂ©e suivant la prioritĂ© utilisant les rĂšgles listĂ©es ci-dessus.

5 arguments ou plus

La condition est analysée et évaluée selon les rÚgles de priorité décrites ci-dessus.

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

times

Afficher les durĂ©es cumulĂ©es utilisateur et systĂšme pour l’interprĂ©teur et les processus lancĂ©s par cet interprĂ©teur. L’état renvoyĂ© est 0 .

trap [ -lp ] [[ argument ] signal ...]

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

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

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

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

type [ -aftpP ] nom [ nom ...]

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

ulimit [ -HS ] -a
ulimit -HS
] [ -bcdefiklmnpqrstuvxPRT [ limitation ]]

Fournir, sur les systĂšmes qui le permettent, un mĂ©canisme de contrĂŽle des ressources disponibles pour l’interprĂ©teur et pour les processus qu’il lance. Les options -H et -S indiquent si la limitation est stricte (« hard ») ou flexible (« soft ») pour la ressource indiquĂ©e. Une limitation stricte ne peut pas ĂȘtre augmentĂ©e par un utilisateur non privilĂ©giĂ© une fois qu’elle a Ă©tĂ© configurĂ©e ; une limitation flexible peut ĂȘtre augmentĂ©e jusqu’à la valeur de la limitation stricte correspondante. Si ni -H ni -S n’est indiquĂ©, les limitations stricte et flexible sont toutes deux configurĂ©es. La valeur de la limitation peut ĂȘtre un nombre (utilisant les unitĂ©s particuliĂšres de la ressource) ou l’une des valeurs spĂ©ciales hard , soft ou unlimited , qui signifient, respectivement, la limitation stricte actuelle, la limitation flexible actuelle et l’absence de limitation. Si la limitation est omise, la valeur actuelle de la limitation flexible pour la ressource est affichĂ©e, Ă  moins que l’option -H soit indiquĂ©e. Quand plusieurs ressources sont indiquĂ©es, les noms des limitations et leurs unitĂ©s, le cas Ă©chĂ©ant, sont affichĂ©s avant les valeurs. Les autres options sont interprĂ©tĂ©es comme suit :

-a

Toutes les limitations actuelles sont signalĂ©es ; aucune limitation n’est fixĂ©e

-b

La taille maximale du tampon de socket

-c

La taille maximale des fichiers core créés

-d

La taille maximale du segment de donnĂ©es d’un processus

-e

La prioritĂ© maximale d’ordonnancement (« nice »)

-f

La taille maximale d’un fichier Ă©crit par l’interprĂ©teur et ses enfants

-i

Le nombre maximal de signaux en attente

-k

Le nombre maximal de kqueue qui peuvent ĂȘtre allouĂ©s

-l

La taille maximale qui peut ĂȘtre verrouillĂ©e en mĂ©moire

-m

La taille maximale de la partie rĂ©sidente d’un processus (« resident set size » ou RSS, la plupart des systĂšmes ne respectent pas cette limite)

-n

Le nombre maximal de descripteurs de fichiers ouverts (la plupart des systĂšmes ne permettent pas de modifier cette valeur)

-p

La taille d’un tube en blocs de 512 octets (parfois inexistante)

-q

Le nombre maximal d’octets dans les files de messages POSIX

-r

La prioritĂ© maximale d’ordonnancement temps-rĂ©el

-s

La taille maximale de la pile

-t

La durée maximale, en seconde, de temps processeur accordé à un processus

-u

Le nombre maximal de processus autorisés pour un seul utilisateur

-v

La quantitĂ© maximale de mĂ©moire virtuelle disponible pour l’interprĂ©teur et, sur certains systĂšmes, pour ses enfants

-x

Le nombre maximal de verrous de fichiers

-P

Le nombre maximal de pseudo-terminaux

-R

La durĂ©e maximale pendant laquelle un processus en temps rĂ©el peut s’exĂ©cuter avant de bloquer, en microsecondes.

-T

Le nombre maximal de processus légers (« threads »)

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

umask [ -p ] [ -S ] [ mode ]

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

unalias [ -a ] [ nom ...]

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

unset [ -fv ] [ -n ] [ nom ...]

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

wait [ -fn ] [ -p nom_de_variable ] [ id ... ]

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

MODE DE COMPATIBILITÉ DE L’INTERPRÉTEUR

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

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

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

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

À partir de bash-4.4, bash a commencĂ© Ă  rendre obsolĂštes les niveaux de compatibilitĂ© plus anciens. Les options finiront par ĂȘtre retirĂ©es au profit de BASH_COMPAT .

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

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

-

La protection de la partie droite de l’opĂ©rateur de correspondance (=˜) d’une expression rationnelle de la commande [[ n’a aucun effet particulier.

compat32

-

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

compat40

-

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

compat41

-

En mode POSIX , time peut ĂȘtre suivi par des options tout en continuant Ă  ĂȘtre reconnu comme un mot rĂ©servĂ© (c’est l’interprĂ©tation POSIX 267).

-

En mode POSIX , l’analyseur exige qu’il existe un nombre pair de guillemets simples dans la partie mot d’un dĂ©veloppement de paramĂštres protĂ©gĂ© par des guillemets doubles et les traite de façon particuliĂšre, ainsi les caractĂšres entre les guillemets simples sont considĂ©rĂ©s comme protĂ©gĂ©s (c’est l’interprĂ©tation POSIX 221).

compat42

-

La chaĂźne de remplacement dans le motif de substitution entre guillemets doubles n’est pas sujette Ă  la suppression des guillemets, comme dans les versions postĂ©rieures Ă  bash-4.2.

-

En mode POSIX , les guillemets simples sont considĂ©rĂ©s particuliers lors du dĂ©veloppement de la partie mot d’un dĂ©veloppement de paramĂštres protĂ©gĂ©e par des guillemets doubles et peuvent ĂȘtre utilisĂ©s pour protĂ©ger une accolade fermante ou un autre caractĂšre spĂ©cial (cela fait partie de l’interprĂ©tation POSIX 221) ; dans les versions ultĂ©rieures, les guillemets simples ne sont pas traitĂ©s particuliĂšrement dans les dĂ©veloppements de mots entre guillemets doubles.

compat43

-

L’interprĂ©teur n’affiche pas de message d’avertissement si une tentative est faite d’utiliser une affectation composĂ©e protĂ©gĂ©e comme un argument Ă  dĂ©clarer (par exemple, dĂ©clarer -a toto='(1 2)'). Les versions ultĂ©rieures avertissent que cette utilisation est obsolĂšte.

-

Les erreurs de dĂ©veloppement de mots ne sont pas considĂ©rĂ©es comme des erreurs fatales qui provoquent l’échec de la commande en cours, mĂȘme en mode POSIX (le comportement par dĂ©faut est de les traiter comme des erreurs fatales, ce qui fait que l’interprĂ©teur termine).

-

Lors de l’exĂ©cution d’une fonction de l’interprĂ©teur, l’état de la boucle (while/until/ etc.) n’est pas rĂ©initialisĂ©, aussi break ou continue dans cette fonction interrompt ou poursuit la boucle dans le contexte de l’appel. Bash-4.4 et les versions ultĂ©rieures rĂ©initialisent l’état de la boucle pour Ă©viter cela.

compat44

-

L’interprĂ©teur configure les valeurs utilisĂ©es par BASH_ARGV et BASH_ARGC de telle maniĂšre qu’elles peuvent se dĂ©velopper en paramĂštres positionnels de l’interprĂ©teur mĂȘme si le mode de traçage Ă©tendu n’est pas activĂ©.

-

Un sous-interprĂ©teur hĂ©rite des boucles du contexte de son parent, aussi break ou continue provoqueront la terminaison du sous-interprĂ©teur. Bash-5.0 et les versions ultĂ©rieures rĂ©initialisent l’état de la boucle pour Ă©viter la terminaison.

-

Les affectations de variables prĂ©cĂ©dant des commandes internes comme export et readonly qui configurent des attributs, continuent Ă  affecter des variables ayant le mĂȘme nom dans l’environnement d’appel mĂȘme si l’interprĂ©teur n’est pas en mode POSIX .

compat50

-

Bash-5.1 a modifiĂ© la maniĂšre dont $RANDOM est gĂ©nĂ©rĂ© pour introduire un peu plus d’alĂ©a. Si le niveau de compatibilitĂ© de l’interprĂ©teur est fixĂ© à 50 ou moins, bash retourne Ă  la mĂ©thode de bash-5.0 et des versions antĂ©rieures, aussi l’ensemencement du gĂ©nĂ©rateur de nombres alĂ©atoires en affectant une valeur Ă  RANDOM produira la mĂȘme sĂ©quence qu’avec bash-5.0.

-

Si la table de hachage des commandes est vide, les versions de bash antĂ©rieures Ă  bash-5.1 affichaient un message d’information Ă  cet effet mĂȘme quand elles produisaient une sortie qui pouvait ĂȘtre rĂ©utilisĂ©e en entrĂ©e. Bash-5.1 supprime ce message quand l’option -l est fournie.

compat51

-

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

INTERPRÉTEUR RESTREINT

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

-

changer de répertoire avec cd ;

-

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

-

indiquer des noms de commandes contenant un / ;

-

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

-

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

-

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

-

importer une dĂ©finition de fonction dans l’environnement au dĂ©marrage ;

-

analyser les valeurs de SHELLOPTS de l’environnement d’interprĂ©teur au dĂ©marrage ;

-

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

-

utiliser la commande interne exec pour remplacer l’interprĂ©teur par une autre commande ;

-

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

-

utiliser la commande interne enable pour activer les commandes internes de l’interprĂ©teur dĂ©sactivĂ©es ;

-

indiquer l’option -p à la commande interne commande ;

-

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

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

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

VOIR AUSSI

Manuel de référence de Bash , Brian Fox et Chet Ramey
The GNU Readline Library
, Brian Fox et Chet Ramey
The GNU History Library
, Brian Fox et Chet Ramey
Portable Operating System Interface (POSIX) Part 2: Shell and
Utilities
, IEEE –

http://pubs.opengroup.org/onlinepubs/9699919799/

http://tiswww.case.edu/˜chet/bash/POSIX – une description du mode POSIX
sh
(1), ksh (1), csh (1)
emacs
(1), vi (1)
readline
(3)

FICHIERS

/bin/bash

L’exĂ©cutable bash

/etc/profile

Le fichier d’initialisation commun Ă  tout le systĂšme, exĂ©cutĂ© pour les interprĂ©teurs de commandes de connexion

/etc/bash.bashrc

Le fichier d’initialisation commun Ă  tout le systĂšme pour les interprĂ©teurs interactifs

/etc/bash.bash.logout

Le fichier de nettoyage des interprĂ©teurs de connexion commun Ă  tout le systĂšme, exĂ©cutĂ© lorsqu’un interprĂ©teur de connexion termine

˜/.bash_profile

Le fichier d’initialisation personnel exĂ©cutĂ© pour les interprĂ©teurs de commandes de connexion

˜/.bashrc

Le fichier d’initialisation personnel pour les interprĂ©teurs interactifs

˜/.bash_logout

Le fichier de nettoyage personnel des interprĂ©teurs de commandes de connexion, exĂ©cutĂ© lorsqu’un interprĂ©teur de commandes de connexion termine

˜/.bash_history

La valeur par dĂ©faut de HISTFILE , le fichier dans lequel bash sauvegarde l’historique des commandes

˜/.inputrc

Le fichier d’initialisation personnel de readline

AUTEURS

Brian Fox, Free Software Foundation
bfox@gnu.org

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

SIGNALEMENTS DE BOGUES

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

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

TOUS les signalements d’anomalie doivent contenir :
Le numéro de version de bash
Le matĂ©riel et le systĂšme d’exploitation utilisĂ©s
Le compilateur utilisé pour compiler
Une description (en anglais) de l’anomalie
Un petit script ou une « recette » qui dĂ©montre l’anomalie

bashbug insĂšre automatiquement les trois premiers Ă©lĂ©ments de cette liste dans le formulaire qu’il fournit pour remplir un signalement d’anomalie.

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

BOGUES

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

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

L’utilisation des alias peut avoir des consĂ©quences inattendues.

Les commandes internes et les fonctions de l’interprĂ©teur ne peuvent pas ĂȘtre suspendues/relancĂ©es.

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

Les variables de type tableau ne peuvent pas (encore) ĂȘtre exportĂ©es.

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

TRADUCTION

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

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

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