zion -  bash

.de }1 .ds ]X &*(]B .nr )E 0 .if !"$1"" .nr )I $1n .}f .ll
(LLu .in
()Ru+
(INu+
()Iu .ti
(INu .ie !
()Iu+
()Ru-w*(]Xu-3p {*(]X } .el *(]Xh|
()Iu+
()Ruc .}f .. .de FN $1 ..

Nom

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

Résumé

bash [options] [fichier]

Copyright

.if n Bash est sous Copyright (C) 1989, 1999 de la Free Software Foundation, Inc. .if t Bash est sous Copyright (co 1989, 1999 de la Free Software Foundation, Inc.

Description

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

Bash est conçu pour être conforme aux spécifications IEEE concernant les shells et les outils Posix (Groupe de travail de l'IEEE 1003.2).

Options

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

-c chaîne^
    Si l'argument -c est présent, les commandes sont interprétées depuis la chaîne fournie. S'il existe d'autres arguments après la chaîne , ils sont transmis comme paramètres positionnels, en commençant par $0 .

-r
    Si l'option -r est présente, l'interpréteur est restreint (voir SHELLS RESTREINTS plus bas).

-i
    Si l'option -i est présente, l'interpréteur est interactif .

-s
    Si l'option -s est présente, ou s'il n'y a plus d'arguments sur la ligne de commande, après le traitement des options, l'interprétation se fera depuis l'entrée standard. Cette option permet de remplir les paramètres positionnels tout en invoquant un shell interactif.

-D
    Une liste de toutes les chaînes entre '"' et précédées de $ est affichée sur la sortie standard. Ce sont les chaînes qui sont sujettes à une traduction quand la localisation n'est ni celle du C, ni celle du standard POSIX. Cela nécessite l'option -n ; aucune commande ne sera exécutée.

--
    Deux caractères -- permettent d'indiquer la fin des options, et empêchent le traitement des arguments restants. Ces derniers sont alors traités comme des noms de fichiers et des paramètres. - est équivalent à --.


Bash reconnaît également plusieurs options multi-caractères. Ces options doivent, pour être reconnues, apparaître sur la ligne de commande avant les options mono-caractère.

--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 se termine avec succès.

--login
    Demande que bash Se comporte comme un shell de login. (Voir INVOCATION plus bas).

--noediting
    Ne pas utiliser la bibliothèque GNU readline pour la lecture des lignes de commande, lorsque le shell est interactif.

--noprofile
    Ne lire ni le fichier de configuration générale /etc/profile

          ni les fichiers personnalisés ~/.bash_profile , ~/.bash_login , ou ~/.profile . Par défaut bash lit ces fichiers lorsqu'il est invoqué comme shell de login (voir le paragraphe INVOCATION plus bas).
-norc
    Ne pas lire le fichier de configuration personnalisée ~/.bashrc lorsque le shell est interactif. Cette option est activée par défaut lorsque bash est invoqué sous le nom sh .

--posix
    Aligner le comportement de bash sur le standard Posix 1003.2, en ce qui concerne les options dont l'action par défaut diffère de ce standard.

    --rcfile fichier Exécuter les commandes contenues dans le fichier mentionne, plutôt que celles du fichier de configuration personnelle ~/.bashrc , si le shell est interactif (voir le paragraphe INVOCATION plus bas).

--restricted
    Le shell devient restreint (voir le paragraphe SHELLS RESTREINTS plus bas).

--rpm-requires
    Affiche une liste des fichiers qui sont nécessaires pour le lancement d'un script shell. Ceci nécessite l'option '-n' et est soumis aux mêmes limites que les vérifications d'erreurs à la compilation ; les back-quotes, les tests [] et les évalutations ne sont pas analysés, et certaines erreurs peuvent être oubliées.

--verbose
    Ã‰quivalent à -v

--version
    Afficher le numéro de version de bash sur la sortie standard et terminer avec succès.


Arguments

S'il reste des arguments sur la ligne de commande après l'analyse des options, et si ni l'option -c , ni l'option -s ne sont présentes, le premier argument est supposé être le nom du fichier dans lequel lire les commandes. Lorsque bash est invoqué de cette manière, $0 contient le nom du fichier, et les autres paramètres positionnels contiennent les arguments restants. Bash lit, et exécute, les commandes depuis ce fichier, puis se termine. Le code de retour de bash est celui de la dernière commande exécutée dans le fichier script. Si aucune commande n'a été exécutée, le code de retour est 0.

Invocation

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

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

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

Lorsque bash est lancé comme shell de login interactif, ou comme shell non-interactif avec l'option --login, il lit et exécute tout d'abord les commandes se trouvant dans le fichier /etc/profile s'il existe. Après lecture de ce fichier, il recherche ~/.bash_profile, ~/.bash_login, et ~/.profile, dans cet ordre, et exécute les commande se trouvant dans le premier fichier existant et accessible en lecture. L'option --noprofile peut être utilisée au démarrage du shell pour empêcher ce comportement.

Lorsqu'un shell de login se termine, bash lit et exécute les commandes du fichier ~/.bash_logout, s'il existe.

Quand un shell interactif démarre sans être un shell de login, bash lit et exécute les commandes se trouvant dans ~/.bashrc s'il existe. Ce comportement peut être inhibé à l'aide de l'option --norc . L'option --rcfile fichier forcera bash à exécuter les commandes dans fichier plutôt que dans ~/.bashrc.

Quand bash est démarré de manière non-interactive, pour lancer un script shell par exemple, il recherche 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 se trouvait en début de script : .5
     f(CWif [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
.5 mais la valeur de la variable PATH n'est pas utilisée pour rechercher le fichier.

Si bash est invoqué sous le nom sh , il essaye d'imiter le comportement de démarrage des versions historiques de sh autant que possible, tout en restant conforme au standard Posix. Lorsqu'il est invoqué comme shell de login interactif (ou non-interactif avec l'option --login), il essaye d'abord d'exécuter les commandes se trouvant dans /etc/profile et ~/.profile , dans cet ordre. L'option -noprofile peut toujours être utilisée pour désactiver ce comportement. Quand il est invoqué en tant que shell interactif sous le nom sh , bash consulte la variable ENV , développe sa valeur si elle est définie et utilise le résultat en tant que nom de fichier à lire et exécuter. Comme un shell invoqué sous le nom sh n'essaye pas d'exécuter d'autre fichier de démarrage, l'option --rcfile n'a aucun effet. Un shell non interactif invoqué sous le nom sh ne lit aucun autre fichier d'initialisation. Quand il est invoqué sous le nom sh , bash entre en mode posix après avoir lu les fichiers d'initialisation.

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

Bash tente de déterminer s'il est exécuté par le démon lançant les shells distants (généralement appelé rshd ). Si bash se rend compte qu'il est exécuté par rshd, il lit et exécute les commandes de ~/.bashrc si ce fichier existe et est lisible. Il n'a pas ce comportement lorsqu'il est invoqué sous le nom sh. L'option --norc peut être utilisé pour interdire ce comportement, et l'option --rcfile permet de forcer l'utilisation d'un autre fichier, mais rshd n'utilise généralement pas ces options et ne permet pas non plus leur utilisation.

Si le shell est lancé avec un identifiant effectif d'utilisateur (ou de groupe) différent de l'identifiant réel, et si l'option -p n'est pas utilisée, aucun fichier d'initialisation n'est lu, les fonctions du shell ne sont pas importées depuis l'environnement, la variable SHELLOPTS est ignorée si elle apparaît dans l'environnement, et l'identifiant effectif de l'utilisateur (du groupe) est remplacé par l'ID réel. Si l'option -p est fournie, le démarrage est le même mais l'ID effectif n'est pas modifié.

Définitions


Les définitions suivantes sont utilisées tout au long de ce document.
blanc
    Un espace ou une tabulation.

mot
    une séquence de caractères considérée comme une unité élémentaire par le shell. On parle également de token (jeton).

nom
    un mot ne contenant que des caractères alphanumériques ou le soulignement (underscore), commençant par une lettre ou un soulignement. On s'y réfère également sous le terme identificateur .

méta-caractère
    Un caractère qui, non protégé, sépare les mots. Un de ceux-ci :
    


.if t | & ; ( ) < > espace tabulation .if n | & ; ( ) < > espace tabulation


opérateur de contrôle
    Un jeton ayant une fonction de contrôle. L'un des symboles suivants :
    


.if t (bv(bv & && ; ;; ( ) | <retour-chariot> .if n || & && ; ;; ( ) | <retour-chariot>


Mots Réservés

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

.B .if n ! case do done elif else esac fi for function if in select then until while { } time [[ ]] .if t ! case do done elif else esac fi for function if in select then until while { } time [[ ]] .if t .RE[/col][/row][/table]

Grammaire du shell


Commandes simples


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

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

Pipelines


Un pipeline est une séquence d'une ou plusieurs commandes séparées par le caractère | . Le format d'un pipeline est :
    [time [-p]] [ ! ] commande_1 [ | commande_2 ... ]


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

Si le mot réservé ! précède un pipeline, la valeur de sortie de celui-ci sera la NÉGATION logique de la valeur de retour de la dernière commande. Sinon, le code de retour d'un pipeline sera celui de la dernière commande. L'interpréteur attend la fin de toutes les commandes du pipeline avant de renvoyer une valeur.

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

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

Listes


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

Dans cette liste d'opérateurs, && et (bv(bv ont une précédence identique, suivis par ; et &, qui ont également une précédence identique.

Si une commande se termine par l'opérateur de contrôle & , l'interpréteur l'exécute en arrière-plan, dans un sous-shell. L'interpréteur n'attend pas que la commande se termine et retourne un code 0. Les commandes séparées par un ; sont exécutées successivement, l'interpréteur attend que chaque commande se termine avant de lancer la suivante. Le code de retour est celui de la dernière commande exécutée.

Les opérateurs de contrôle && et (bv(bv indiquent respectivement une liste liée par un ET, et une liste liée par un OU. Une liste ET a la forme
    commande_1 && commande_2


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

Une liste OU a la forme
    commande_1 (bv(bv commande_2



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

Commandes composées


Une commande composée est l'une des constructions suivantes :
    (liste) liste est exécutée dans un sous-shell. 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. Le code de retour est celui de la liste.

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

    .((expression)) L'expression est évaluée selon les règles décrites plus bas au paragraphe ÉVALUATION ARITHMÉTIQUE . Si la valeur arithmétique de l'expression est non-nulle, le code renvoyé est zéro ; sinon 1 est renvoyé. Cela est strictement identique à let "expression".

    [[ expression ]] Renvoie 1 ou 0 selon la valeur de la condition expression. les expressions sont composées d'éléments primaires décrits dans EXPRESSIONS CONDITIONNELLES . Le coupage des mots et l'expansion des chemins ne sont pas réalisés sur les portions entre [[ et ]]; l'expansion des tildes, des paramètres, des variable, des expressions arithmétiques, la substitution des commandes et des processus, ainsi que la disparition des apostrophes sont réalisés. .if t 0.5 .if n 1 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 et est recherchée selon les règles décrites dans Motifs génériques. La valeur renvoyée est 0 si les chaînes correspondent (ou respectivement ne correspondent pas), et 1 sinon. Toute partie du motif peut être protégée avec des apostrophes pour forcer sa comparaison en tant que chaîne (sans développement). .if t 0.5 .if n 1 Les expressions peuvent être combinées en utilisant les opérateurs suivants, par ordre décroissant de priorité : .if t 0.5 .if n 1
    

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

! expression
    Vraie si expression est vraie.

    expression1 && expression2 Vraie si expression1 et expression2 sont toutes les deux vraies.

    .if t expression1 (bv(bv expression2 .if n expression1 || expression2 Vraie si expression1 ou expression2 est vraie.


 
  Les opérateurs && et .if t (bv(bv .if n || n'exécutent pas expression2 si la valeur de expression1 suffit à déterminer le code de retour de l'expression conditionnelle entière.
    for nom [ in mot ] ; do liste ; done La liste de mots à la suite de in est développée, créant une liste d'éléments. La variable nom prend successivement la valeur de chacun des éléments, et liste est exécutée à chaque fois. Si in mot est omis, la commande for exécute la liste une fois pour chacun des paramètres positionnels ayant une valeur (voir le paragraphe PARAMÈTRES plus bas). Le code de retour est celui de la dernière commande exécutée. Si le développement de ce qui suit in est une liste vide, aucune commande n'est exécutée et 0 est renvoyé.

    select nom [ in mot ] ; do liste ; done La liste de mots à la suite de in est développée, créant une liste d'éléments. L'ensemble des mots développés est imprimé sur la sortie d'erreur standard, chacun précédé par un nombre. Si in mot est omis, les paramètres positionnels sont imprimés (voir le paragraphe PARAMÈTRES plus bas). Le symbole d'accueil PS3 est affiché, et une ligne est lue depuis l'entrée standard. Si la ligne est constituée d'un nombre correspondant à l'un des mots affichés, la variable nom est remplie avec ce mot. Si la ligne est vide, les mots et le symbole d'accueil sont affichés à nouveau. Si une fin de fichier (EOF) est lue, la commande se termine. Pour toutes les autres valeurs, la variable nom est vidée. La ligne lue est stockée dans la variable REPLY . La liste est exécutée après chaque sélection, jusqu'à ce qu'une commande break ou return soit atteinte. Le code de retour de select est celui de la dernière commande exécutée dans la liste , ou zéro si aucune commande n'est exécutée.

    case mot in [ motif [ | motif ] ... ) liste ;; ] ... esac Une commande case commence d'abord par développer le mot, puis essaye de le mettre en correspondance successivement avec chacun des motifs en utilisant les mêmes règles que pour les noms de fichiers (voir le paragraphe Développement des noms de fichiers plus bas). Quand une correspondance est trouvée, la liste associée est exécutée. Dès qu'un motif correct a été trouvé, il n'y a plus d'autre essais. Le code retour est zéro si aucun motif ne correspond, sinon il s'agit du code 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 code de retour est nul, la liste du then est exécutée. Sinon, chacune des listes des elif est exécutée successivement, et si un code de retour est nul, la liste du then associé est exécutée, et la commande se termine. En dernier ressort, la liste du else est exécutée. Le code de retour est celui de la dernière commande exécutée, ou zéro si aucune condition n'a été vérifiée.

[/col][/row][/table]
[table][row]    [col]while liste ; do liste ; done
    until liste ; do liste ; done

La commande while répète la liste du do tant que la dernière commande de la liste du while renvoie un code de retour nul. La commande until agit de même manière, sauf que le test est négatif, et la liste du do est exécutée tant que la liste du until renvoie un code non-nul. Le code de retour des commandes while et until est celui de la dernière commande exécutée dans la liste do, ou zéro si aucune commande n'a été exécutée.
    [ function ] nom () { liste; } Ceci définit une fonction possédant le nom mentionné. Le corps de cette fonction est la liste de commandes entre { et }. Cette liste est exécutée dès que le nom de la fonction est invoqué en tant que commande simple. Le code de retour est celui de la dernière commande exécutée dans le corps de la fonction. (voir le paragraphe FONCTIONS plus bas)


Commentaires

Dans un shell non-interactif, ou dans un shell interactif avec l'option -o interactive-comments activée par la commande interne shopt (voir COMMANDES INTERNES DU SHELL plus bas), un mot commençant par # permettra d'ignorer tous les caractères restants sur la ligne. Un shell interactif sans l'option interactive-comments n'autorise pas les commentaires. L'option interactive_comments est activée par défaut dans les shells interactifs.

Protection

Les protections (quoting) permettent de forcer l'interpréteur à ignorer la signification spéciale de certains caractères ou mots. Les protections peuvent être utilisées pour empêcher 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éta-caractères mentionnés dans le paragraphe DÉFINITIONS plus haut ont des significations spéciales pour le shell, et doivent être protégés pour garder leur propre valeur. Il y a trois mécanismes de protection : le caractère d'échappement, les apostrophes (quote) et les guillemets (double-quote).

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

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

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

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

Les mots de la forme $'chaîne' sont traités différemment. Le mot est développé en chaîne avec les séquences d'échappement remplacées par les séquences standards du C ANSI:
    ea
    alerte (cloche alias bip)

eb
    effacement arrière

ee
    un caractère escape

ef
    fin de page

en
    fin de ligne

er
    retour chariot

et
    tabulation horizontale

ev
    tabulation verticale

ee
    anti-slash (backslash)

ennn
    le caractère dont le code ASCII en octal est nnn (un à trois chiffres)

exnnn
    le caractère dont le code ASCII en hexadécimal est nnn (un à trois chiffres)


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

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

ParamÈtres

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

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

Une variable peut recevoir une valeur par une affectation de la forme
    nom=[valeur]


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

Paramètres positionnels


Un paramètre positionnel est un paramètre indiqué par un ou plusieurs chiffres (à l'exception du chiffre 0 seul). Les paramètres positionnels sont remplis avec les arguments du shell lors de son invocation. Ils peuvent être modifiés avec la commande interne set . On ne peut pas utiliser d'assignation pour modifier le contenu d'un paramètre positionnel. Les paramètres positionnels sont temporairement modifiés lors de l'exécution d'une fonction du shell (voir le paragraphe FONCTIONS plus bas).

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

Paramètres spéciaux


Il existe plusieurs paramètres ayant un comportement particulier. Ces paramètres peuvent uniquement être consultés, on ne peut pas les modifier.
*
    Se développe en l'ensemble des paramètres positionnels, commençant à 1. Quand le développement se produit entre des guillemets, * se transforme en un seul mot constitué de la valeur de tous les paramètres positionnels séparées par le premier caractère de la variable spéciale IFS . Ceci signifie que "$*" est équivalent à "$1c$2c...", dans laquelle 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 nulle, les paramètres sont juxtaposés sans séparation.

@
    Se développe en l'ensemble des paramètres positionnels, commençant à 1. Quand le développement a lieu entre guillemets, chaque paramètre se transforme en un mot distinct. Ceci signifie que "$@" est équivalent à "$1" "$2" ... Quand il n'y a pas de paramètres positionnels, "$@" et $@ sont simplement éliminés.

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

?
    Fournit le code de retour du dernier pipeline exécuté à l'avant-plan.

-
    Est remplacé par la liste des options du shell indiquées durant l'invocation, configurées avec la commande interne set ou positionnées par le shell lui-même (comme avec l'option -i ).

$
    Se transforme en PID du shell. Dans un sous-shell (), il se transforme en PID du shell, et non pas du sous-shell.

!
    Se transforme en PID de la commande (asynchrone) exécutée en arrière-plan le plus récemment.

0
    Se développe pour donner le nom du shell ou du script. Ce paramètre est rempli lors de l'initialisation de l'interpréteur. Si bash est invoqué 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 chemin d'accès utilisé pour invoquer bash , comme il l'a reçu en argument zéro.

_
    Au lancement du shell, contient le chemin absolu du shell ou du script en cours d'exécution. Devient le dernier argument de la commande précédente, après développement. Correspond aussi au chemin d'accès complet de chaque commande exécutée, et se retrouve dans l'environnement exporté à cette commande. Lors de la vérification de l'arrivée de courrier, contient le nom du fichier de courrier en cours de vérification [Ndt: généralement /var/mail/nom_de_l_utilisateur].


Variables du shell


Les variables suivantes sont remplies par l'interpréteur de commandes :

PPID
    L'ID du processus parent du shell. Cette variables est protégée en écriture.

PWD
    Le répertoire de travail en cours, tel qu'il est configuré par la commande cd .

OLDPWD
    Le répertoire de travail précédent, configuré par la commande cd .

REPLY
    Contient la ligne d'entrée lue par la commande interne read lorsqu'elle n'a pas d'argument.

UID
    Contient l'ID de l'utilisateur, initialisé au démarrage du shell. C'est une variable en lecture seulement

EUID
    Contient l'UID effectif de l'utilisateur, initialisé au démarrage du shell. Cette variable est en lecture seule.

GROUPS
    Variable de type tableau contenant la liste des groupes dont l'utilisateur est membre. Cette variables est protégée en écriture.

BASH
    Se développe en chemin d'accès complet à l'instance courrante de bash .

BASH_VERSION
    Correspond au numéro de version de cette instance de bash .

BASH_VERSINFO
    Une variable tableau protégée en écriture dont les membres représentent la version de cette instance de bash . Cette valeur est renseignée de la manière suivante: .5
    

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 patch.

BASH_VERSINFO[3]
    Le numéro de compilation.

BASH_VERSINFO[4]
    Le statut de cette version (e.g., beta1).

BASH_VERSINFO[5]
    La valeur de MACHTYPE.


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

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

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

LINENO
    Chaque fois que ce paramètre est référencé, le shell le remplace par un nombre décimal repré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étruit (commande unset), il perd son comportement spécial, même s'il est recréé plus tard.

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

DIRSTACK
    Une variable de type tableau (voir Tableaux plus bas) représentant le contenu courant de la pile de répertoires. Les répertoires apparaissent dans la pile dans l'ordre dans lequel la commande interne dirs les affiche. Il est possible de modifier directement cette variables mais les commandes internes pushd et popd doivent être utilisées pour ajouter et enlever des répertoires. Modifier cette variable ne modifiera pas le répertoire courant. Si DIRSTACK est détruite, elle perd ses propriétés spéciales, même si elle est recréée.

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

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

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

HOSTNAME
    Automatiquement affectée avec le nom de l'ordinateur.

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

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

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

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


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

IFS
    Le Séparateur de Champs Interne Internal Field Separator qui est utilisé pour séparer les mots après les développements, et pour découper les lignes en mots avec la commande interne read . La valeur par défaut est ``<espace><tabulation><retour-chariot>''.

PATH
    Le chemin de recherche des commandes à exécuter. Il s'agit d'une liste de répertoires, séparés par des deux-points (`:') que l'interpréteur consulte lorsqu'il recherche une commande (voir le paragraphe EXÉCUTION DES COMMANDES plus bas). Le chemin par défaut dépend du système, et de la configuration choisie par la personne installant bash . Une configuration fréquente est ``/bin:/usr/bin:/usr/local/bin:.''.

HOME
    Le répertoire personnel de l'utilisateur. C'est l'argument par défaut de la commande interne cd. Cette variable sert également lors du développement du tilde.

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 . Une configuration possible serait ``.:~:/usr''.

BASH_ENV
    Si ce paramètre est configuré lorsque bash exécute un script, sa valeur est considérée comme un nom de fichier, contenant les commandes d'initialisation de l'interpréteur, comme .bashrc . La valeur de BASH_ENV est soumise au remplacement des paramètres, substitution de commandes, et évaluation arithmétique avant d'être considérée comme nom de fichier. PATH n'est pas utilisée pour rechercher le fichier obtenu.

MAIL
    Si ce paramètre correspond à un nom de fichier, et si la variable MAILPATH n'est pas configurée, bash informera l'utilisateur si un courrier arrive dans le fichier indiqué.

MAILCHECK
    Indique une période (en secondes), par défaut 60, avec laquelle bash vérifiera si un nouveau courrier est arrivé. Lorsque le délai est écoulé, le shell vérifiera la présence d'un courrier avant d'afficher son symbole d'accueil. Si cette variable est détruite, le shell cessera la vérification.

MAILPATH
    Il s'agit d'une liste 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. Exemple:
    


MAILPATH='/usr/spool/mail/bfox?"Tu as du courrier":~/shell-mail?"$_ a du courrier"'

Bash fournit une valeur par défaut pour cette variable, mais l'emplacement du fichier boîte à lettres dépend du système (par exemple /usr/spool/mail/$USER).

PS1
    La valeur de ce paramètre est développée puis utilisée comme symbole d'accueil principal (voir le paragraphe SYMBOLE D'ACCUEIL ci-dessous). La valeur par défaut est ``es-eve$ ''.

PS2
    La valeur de ce paramètre est développée comme PS1 puis utilisée comme symbole d'accueil secondaire. Par défaut il s'agit de ``> ''.

PS3
    La valeur de ce paramètre est utilisée comme symbole pour la commande select (voir GRAMMAIRE DU SHELL plus haut).

PS4
    La valeur de ce paramètre est développée comme PS1 puis affichée entre chaque commande lors d'un suivi d'exécution. Le premier caractère de PS4 est répété autant de fois que nécessaire pour indiquer le niveau d'imbrication. La valeur par défaut est ``+ ''.

TIMEFORMAT
    La valeur de ce paramètre est utilisée en tant que chaîne de format pour afficher le temps consommé dans les pipelines préfixés avec le mot réservé time . Le caractère % introduit une séquence d'échappement qui est développée avec une valeur de temps ou une autre information. Les séquences d'échappement et leurs significations sont les suivantes; les accolades entourent les parties facultatives. .5
    

%
    Un % seul (non interprété).

%[p][l]R
    Le temps écoulé en secondes.

%[p][l]U
    Le temps processeur écoulé en mode utilisateur en secondes.

%[p][l]S
    Le temps processeur écoulé en mode système en secondes.

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


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

    La séquence optionnelle l spécifie un format étendu, incluant les minutes, de la forme MMmSS.FFs. La valeur de p détermine si la partie décimale est affichée ou non.

    Si cette variable n'est pas assignée, bash réagit comme si la valeur $'enrealet3lUensyst%3lS' avait été affectée. Si la variable est vide, aucune information n'est affichée. Un caractère fin-de-ligne est ajouté à la fin de l'affichage.

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

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

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

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

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

LC_ALL
    Cette variable surcharge LANG et toute autre variable LC_ indiquant la localisation.

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

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

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

PROMPT_COMMAND
    Lorsque cette variable contient une valeur, celle-ci est exécutée en tant que commande, avant l'affichage du symbole d'accueil principal.

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

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

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

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

GLOBIGNORE
    Une liste de motifs séparés par des deux-points, définissant la liste des noms de fichiers à ignorer lors du développement des chemins. Si un nom de fichier correspondant à un motif d'expansion, correspond également à un motif dans GLOBIGNORE , il est supprimé de la liste des correspondances.

INPUTRC
    Le nom du fichier de configuration de readline prioritaire sur le fichier par défaut ~/.inputrc

          (voir READLINE plus bas).
HISTCONTROL
    Si cette variable contient la valeur ignorespace , les lignes commençant par un caractère d'espacement ne seront par mémorisées dans l'historique. Si elle contient la valeur ignoredups , une ligne correspondant exactement à la ligne de commande précédente ne sera pas dupliquée dans l'historique. La valeur ignoreboth permet de combiner ces deux comportements. Si la variable est détruite (commande unset), ou si elle contient une valeur différente des trois mentionnées ci-dessus, tous les lignes lues par l'interpréteur seront mémorisées dans la liste d'historique, sous contrôle de HISTIGNORE . Le fonctionnement de cette variable est surchargé par HISTIGNORE . La seconde ligne et les suivantes d'une commande multiligne ne sont pas testées, et sont ajoutées dans l'historique quelque soit la valeur de HISTCONTROL .

HISTIGNORE
    Une liste de motifs séparés par des deux-points déterminant quelles lignes de commandes seront ajoutées à l'historique. Chaque motif est accroché au début de la ligne et doit lui correspondre en entier (il n'y a pas d'ajout de `*' implicite). Chaque motif est comparé à chaque ligne après que les vérifications de HISTCONTROL aient été appliquées. En plus des motifs génériques normaux du shell, `&' correspond à la ligne précédente de l'historique. `&' peut être protégé par un anti-slash. Ce dernier est éliminé avant de tenter une comparaison. La seconde ligne et les suivantes d'une commande multiligne ne sont pas testées, et sont ajoutées dans l'historique quelque soit la valeur de HISTIGNORE .

histchars
    Cette variable contient deux ou trois caractères contrôlant le développement de l'historique, et le découpage en jetons (voir DÉVELOPPEMENT DE L'HISTORIQUE plus bas). Le premier caractère est le caractère de développement de l'historique , c'est à dire 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 il s'agit de `^'. L'éventuel troisième caractère est celui qui indique, lorsqu'on le trouve en début de mot que le reste de la ligne est un commentaire. Normalement on utilise le caractère `#'. Ce caractère de commentaire empêche l'expansion de l'historique pour tous les mots restants sur la ligne. En revanche, il ne s'agit pas obligatoirement du caractère de commentaire pour l'interpréteur.

HOSTFILE
    Contient le nom d'un fichier ayant le même format que /etc/hosts

          qui sera consulté lorsque le shell devra compléter un nom d'hôte. Ce fichier peut être changé de manière interactive. Lors de la prochaine tentative pour compléter un nom d'hôte, bash ajoutera le nouveau fichier à sa base de données déjà existantes.
auto_resume
    Cette variable configure le comportement du shell interactif vis-à-vis de l'utilisateur et du contrôle de jobs. Si cette variable existe, les commandes simples constituées d'un seul mot sont considérées comme de possibles relances de travaux arrêtés. Aucune ambiguïté n'est possible, si plusieurs travaux arrêtés commencent par la chaîne saisie, bash sélectionne le job manipulé le plus récemment. Le nom du job arrêté correspond, dans ce contexte, à la ligne de commande utilisée pour le lancer. Si cette variable contient la valeur exact , la chaîne fournie doit correspondre exactement au nom d'un job arrêté. Si elle contient la valeur substring , la chaîne fournie doit correspondre à une sous-chaîne du nom du job arrêté. La valeur substring fournit un comportement analogue au job id %? (voir CONTRÔLE DES JOBS plus bas). Si la variable contient n'importe quelle autre valeur, la chaîne fournie doit correspondre à un préfixe du nom d'un job arrêté. C'est analogue au fonctionnement du job id % .


Tableaux

Bash propose des variables tableaux à une dimension. N'importe quelle variable peut être utilisée comme tableau ; la commande interne declare peut servir à déclarer explicitement un tableau. Il n'y a pas de limite maximale à la taille d'un tableau, ni d'obligation que les membres soient indexés ou assignés de manière contigûe. Les tableaux sont indexés par des entiers en commençant à zéro.

Un tableau est créé automatiquement si une variable est remplie en utilisant la syntaxe nom[index]=valeur. l' index est traîté comme une expression arithmétique, et s'évaluer en un nombre positif ou nul. Pour déclarer explicitement un tableau, on utilise declare -a nom (voir COMMANDES INTERNES DU SHELL plus bas). declare -a nom[index] est aussi accepté bien que l'index soit ignoré. Des attributs peuvent être spécifié pour une variable tableau en utilisant les commandes internes declare et readonly . Les attributs s'appliquent à tous les membres du tableau.

Les tableaux sont remplis en utilisant l'affectation composée de la forme nom=(valeur_1 ... valeur_n), où chaque valeur est de la forme [index]=chaîne. Seule la chaîne est obligatoire. Si les crochets et les index optionnels sont fournis, les affectations ont lieu en conséquence ; sinon le rang de l'elément rempli est le dernier rang rempli plus un. Les index commencent à zéro. Cette syntaxed est aussi acceptée par la commande interne declare . Les éléments individuels du tableaux sont remplis en utilisant la syntaxe nom[index]=valeur présentée plus haut.

Chaque élément d'un tableau peut référencé en utilisant la notation ${nom[index]}. Les accolades sont indispensables pour éviter les conflits avec le développement des noms de fichiers. Si index est @ ou *, le développement donne tous les membres de nom. Ces deux index diffèrent lorsqu'ils sont employés entre guillemets. Dans ce cas, ${nom[*]} correspond à un seul mot contenant les valeurs de tous les membres séparés par le premier caractère de la variable spéciale IFS , et ${nom[@]} développe chaque membre de nom en un mot distinct. Quant il n'y a pas de membre dans l
Poster un commentaire
Utilisateur
Mot de passe
 
Informaticien.be - © 2002-2024 AkretioSPRL  - Generated via Kelare
The Akretio Network: Akretio - Freedelity - KelCommerce - Votre publicité sur informaticien.be ?