Next: Courriel
Up: Processus et variables d'environnement.
Previous: Consommation mémoire et CPU:
Table des matières
Chaque processus en cours d'exécution connaît des expressions littérales
du type var=value. Ceci signifie qu'un
processus peut prendre en compte la valeur de certains paramètres
ou variables qu'il peut avoir hérité de son processus-parent. La liste
complète des expressions littérales telles que var=value
constitue l'environnement d'un processus
et chaque paramètre var est une variable
d'environnement. Chaque processus a son environnement, copie de
l'environnement du processus-parent.
Après que vous vous soyez connecté et que vous ayez obtenu une invite
de shell, le processus que vous avez utilisé (le shell lui-même) s'est
comporté comme tout autre processus, c'est-à-dire qu'il a commencé
à utiliser un environnement et les variables qui constituent ce dernier.
Pour obtenir une liste complète de ces variables, tapez:
La commande qui suit est utile pour trouver la valeur d'une variable
dont vous n'êtes pas sûr du nom:
Essayez set | grep PATH pour connaître
la variable d'environnement PATH que nous
avons vu à la section 5.18.
Le but d'un environnement est essentiellement de fournir un moyen
alternatif pour passer des paramètres à un programme (alternatif veut
dire: ``en plus des arguments passés en ligne de commande'').
La différence est qu'un environnement est
transmis d'un processus au suivant: par exemple, un shell peut disposer
d'un jeu de variables d'environnement et exécuter un gestionnaire
de fichiers, qui à son tour exécute un traitement de texte. Le traitement
de texte hérite son environnement du gestionnaire de fichier qui,
lui-même, hérite son environnement du shell. Si, par exemple, vous
avez placé une variable PRINTER dans le
shell, celle-ci sera transmise jusqu'au traitement de texte. Cette
technique n'oblige plus à configurer séparément l'imprimante que le
traitement de texte doit utiliser.
Testez:
X="Bonjour à tous"
echo $X
|
Vous avez défini une variable X. A présent,
lancez un second bash:
Vous venez de créer un processus-fils appartenant au processus (le
premier bash) dans lequel vous étiez. Tapez:
Vous constaterez que X n'est pas une variable
d'environnement du second bash dans lequel vous vous trouvez maintenant.
La raison en est que la variable X n'a
pas été exportée comme variable d'environnement.
De ce fait, elle n'a pas été transmise. Tapez maintenant:
qui vous ramène au processus-parent (le premier bash). A présent,
exécutez les commandes suivantes:
Vous pouvez constater que le nouveau bash connaît X.
Nous venons de fixer une variable arbitraire pour notre convenance
personnelle. bash, comme beaucoup d'autres
programmes, fixe automatiquement ses propres variables d'environnement.
La page de man de bash affiche ces variables.
Lorsqu'on parle de désactivation (unsetting)
d'une variable, cela signifie qu'il faut utiliser la commande unset
<variable>. Il est possible que, pour l'instant, certaines variables
vous soient encore très peu familières; cependant, nous en avons fait
la liste parce que nous en aurons besoin à l'avenir.
Ce qui suit est un extrait de la page de man de bash.
Vous verrez que les variables appartiennent à deux catégories: celles
qui fournissent une information spéciale et sont lues sans être fixées
et celles qui configurent le comportement du shell (ou d'autres programmes)
et qui peuvent être établies à tout instant.
[Merci à Brian Fox et Chet Ranney. (annotation de P. Sheer)
Variables du shell.
[NdT: la traduction française est inspirée de la traduction de la page
de man bash, réalisée par Christophe Blaess
en 1997 (cette dernière a été réactualisée par Thierry Vigneaud en
1999-2001).]
- Les variables suivantes sont fixées par le shell:
- PPID
- représente
le PID du shell-parent (variable protégée en écriture);
- PWD
- est
associée au répertoire de travail courant tel que configurée par la
commande cd;
- OLDPWD
- est
associée au répertoire de travail précédent telle que définie par
la commande cd;
- REPLY
- contient
la ligne d'entrée lue par la commande interne read
quand aucun argument n'est fourni;
- UID
- contient
l'UID de l'utilisateur courant, et est initialisée au démarrage du
shell;
- EUID
- contient
l'ID de l'utilisateur effectif associé à l'utilisateur courant, initialisé
au démarrage du shell;
- BASH
- contient
le nom complet du chemin utilisé pour invoquer l'instance de bash
en cours;
- BASH_VERSION
- correspond
au numéro de version de l'instance du bash
en cours;
- SHLVL
- (Shell
Level) est incrémentée d'une unité, à chaque invocation d'une session
de bash;
- RANDOM
- chaque
fois que ce paramètre est référencé, un entier aléatoire est produit.
La séquence des nombres entiers aléatoires peut être initialisée en
attribuant une valeur à RANDOM.
Si RANDOM est
inutilisée (usage de la commande unset),
elle perd ses propriétés spéciales, même si elle est ultérieurement
réinitialisée;
- SECONDS
- chaque
fois que ce paramètre est lu, le nombre de secondes écoulés depuis
l'appel du shell est renvoyé. Si une valeur est conférée à SECONDS,
la valeur retournée pour des attributions ultérieures sera le nombre
de secondes depuis l'attribution ``plus'' la valeur conférée initialement.
Si SECONDS n'est
pas initialisée, elle perd ses propriétés spéciales, même si elle
est ultérieurement réinitialisée;
- 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 ligne courante (commençant à 1)
dans le script ou la fonction. Lorsqu'il ne s'agit pas d'un script,
il n'est pas garanti que la valeur remplacée ait un sens. Lorsqu'il
s'agit d'une fonction, la valeur n'est pas le numéro de la ligne du
fichier-source où la commande apparaît (cette information est perdue
dès que la fonction est exécutée), mais bien une approximation du
nombre de commandes simples exécutées dans le corps de la fonction
en cours. Si LINENO est
détruite (par unset),
elle perd ses propriétés spéciales, même si elle est ultérieurement
réinitialisée (c'est-à-dire recréée);
- HISTCMD
- c'est
le numéro (ou rang) d'une commande dans l'historique. Si HISTCMD
est détruite, elle perd ses propriétés
spéciales, même si elle est ultérieurement recréée;
- OPTARG
- est
la valeur du dernier argument traité par la commande interne getopts
(voir COMMANDES
INTERNES DU SHELL, ci-dessous);
- OPTIND
- est
l'indice du prochain argument, que doit traité la commande internegetopts (voirCOMMANDES INTERNES DU SHELL,
ci-dessous);
- HOSTTYPE
- est
automatiquement rempli par une chaîne qui décrit de manière univoque
le type de machine sur laquelle bash
est en train d'être exécuté. La valeur
par défaut dépend du système;
- OSTYPE
- est
automatiquement rempli par une chaîne qui décrit le système d'exploitation
sur laquelle bash est
en train d'être exécuté. La valeur par défaut est fonction du système.
- Les variables suivantes sont utilisées par le shell. Dans certains
cas, bash attribue une valeur par défaut aux variables. Ces
cas sont notés ci-dessous:
- IFS
- est
le Séparateur de Champ Interne
(Internal Field Separator) qui est
utilisé pour séparer les mots après une développement (ou expansion)
et pour découper les lignes en mots avec la commande interne read.
La valeur par défaut est ``
- PATH
- définit
le chemin de recherche des commandes. C'est une liste de répertoires
séparée par des doubles points (:), que le shell parcourt pour rechercher
les commandes (voir COMMAND
EXECUTION ci-dessous). Le chemin
par défaut dépend du système, et de la configuration choisie par l'administrateur
qui installe le bash.
Une valeur commune est ``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/usr/bin:/'';
- HOME
- définit
le répertoire personnel de l'utilisateur courant; c'est l'argument
par défaut de la commande interne cd;
- CDPATH
- est
le chemin de recherche pour la commande cd.
C'est une liste séparée des double points (:), de répertoires dans
lequel le shell recherche les répertoires de destination spécifiés
par la commande cd.
Une valeur typique est ``.:~:/usr'';
- ENV
- si
ce paramètre est fixé quand le bash
exécute un script de shell, sa valeur
est considérée comme un nom de fichier contenant les commandes pour
initialiser le shell, comme dans .bashrc.
La valeur de ENV est
soumise au remplacement de paramètres, la substitution de commandes
et l'évaluation (ou expansion) arithmétique avant d'être interprétée
comme un nom de chemin. PATH
n'est pas utilisé pour rechercher le
fichier obtenu.
- MAIL
- si
ce paramètre correspond à un nom de fichier et que le variable MAILPATH
n'est pas configurée, bash
informe l'utilisateur de l'arrivée
d'un courrier dans le fichier indiqué.
- MAILCHECK
- souvent
exprimée en secondes, cette variable spécifie quand le bash doit vérifier
l'arrivée de courriels. La valeur par défaut est de 60 s. Lorsqu'il
est temps est écoulé, le shell vérifie l'arrivée de courriel avant
de répondre par le symbole d'accueil. Si la variable est supprimée,
le shell n'autorise pas le relevé du courriel.
- MAILPATH
- consiste
en une liste (séparée par des double-points) de chemins qui doivent
être parcourus pour le relevé du courriel. Le message qui doit être
affiché en cas de courriel peut être indiqué en séparant le nom du
chemin et le message à l'aide du motif '?'. Le motif $_ indique
le nom du fichier de messages. Exemple:
MAILPATH='/usr/spool/mail/bfox?'':~/shell-mail?''$_has
mail'''. Bash fournit une valeur
par défaut pour cette variable, mais la localisation des fichiers
de courriel ''boîte-à-lettres'' d'un utilisateur qu'elle emploie
dépendant du système (à titre d'exemple: /usr/spool/mail/$USER).
- MAIL_WARNING
- si
cette variable est créée, et qu'un fichier (que le bash vérifie pour
le courriel) a été consulté, le message ``The
mail is in mailfile has been read''
est affiché.
- PS1
- La
valeur de ce paramètre est developpée (voir PROMPTING
ci-dessous) pour être utilisée comme
la chaîne d'accueil principale. La valeur par défaut est ``bash''$''
.
- PS2
- La
valeur de ce paramètre est développée pour être utilisée comme chaîne
d'accueil secondaire. La valeur par défaut est ``>''.
- PS3
- La
valeur de ce paramètre est utilisée comme symbole d'accueil de la
commande select (voirSHELL GRAMMAR ci-dessus).
- PS4
- La
valeur de ce paramètre est developpée et affichée avant que chaque
commande bash ne
soit affichée durant un suivi d'exécution. Le premier caractère de
PS4 est reproduit autant de fois que nécessaire pour indiquer les
différents niveaux d'imbrication. Par défaut, le caractère est ``+''.
- HISTSIZE
- est
le nombre de commandes à mémoriser dans l'historique de commandes
(voir HISTORY ci-dessous).
La valeur par défaut est 500.
- HISTFILE
- est
le nom du fichier dans lequel l'historique des commandes est sauvegardé
(voir HISTORY ci-dessous).
La valeur par défaut est ~/.bash_history.
Si cette variable est détruite, l'historique de commandes n'est pas
sauvé à la fin d'un shell interactif.
- HISTFILESIZE
- représente
le nombre maximum de lignes contenues dans l'historique. Quand une
valeur est attribuée à cette variable, le fichier d'historique est
tronqué, si nécessaire, pour ne pas contenir davantage que ce nombre
de lignes. La valeur par défaut est 500.
- OPTERR
- Si
cette variable est posée à 1, bash
montre les messages d'erreurs produits
par la commande interne getopts
(voir SHELL
BUILTIN COMMANDS ci-dessous). OPTERR
est initialisée à 1 chaque fois que
le shell est invoqué ou qu'un script de shell est exécuté.
- PROMPT_COMMAND
- Si
cette variable est initialisée, elle est exécutée en tant que commande
avant d'émettre chaque invite principale.
- IGNOREEOF
- contrôle
le comportement du shell à la réception d'un caractère EOF
(end of file) comme unique entrée.
Lorsque cette variable est initialisée, la valeur qu'elle contient
est le nombre de caractères EOF
consécutifs apparaissant comme caractère
initial d'une ligne, que bash ignore avant de se terminer. Si la variable
existe sans avoir de valeur numérique, ou tout autre valeur, la valeur
par défaut sera fixée à 10. Si la variable n'existe pas, EOF
signifie la fin de saisie dans le shell.
Seuls les shells intéractifs sont concernés.
- TMOUT
- si
cette variable contient une valeur positive, celle-ci est interprétée
comme le nombre de secondes qu'il faut attendre pour toute entrée
après l'affichage de l'invite principale. Sil n'y a pas d'entréeavant
la fin de ce délai, Bash
se terminera.
- FCEDIT
- est
l'éditeur par défaut utilisé par la commande interne fc.
- FIGNORE
- est
une liste (séparée par des double-points (:)) de motifs (suffixes)
à ignorer lors de la complétement de nom de fichiers (voir READLINE
ci-dessous). Un nom de fichier dont
le suffixe correspond à une des entrées dans FIGNORE
est exclus de la liste des noms de
fichiers. Une valeur-type est ``.o:~''.
- INPUTRC
- est
le nom de fichier pour la configuration de readline. Il prévaut sur
la valeur par défaut de ~/.inputrc (voir READLINE
ci-dessous).
notify si
la valeur existe, le bash affiche un rapport dès qu'une tâche en arrière-plan
est terminée. Sinon, il attendra l'affichage de la prochaine invite
principale (voir aussi l'option -b de la commande interne set).
- history_control
-
- HISTCONTROL
- si
cette variable contient la valeur ignorespace,
les lignes commençant par le caractère espacement
(space)
ne sont pas conservées dans l'historique. Si la valeur est ignoredups,
la ligne correspondant à la dernière ligne de l'historique ne sera
pas mémorisée. La valeur ignoreboth
combine les deux comportements. Si
la variable est détruite, ou si toute autre valeur que les trois précitées
lui est attribuée, toutes les lignes lues par l'interpréteur sont
sauvées dans l'historique.
- command_orientated_history
- si
cette variable est créée, bash
tente de sauver toutes les lignes des
commandes multi-lignes sous une même entrée dans l'historique. Ceci
facilite la réédition de commandes sur plusieurs lignes.
- glob_dot_filenames
- Si
cette variable est activée, le bash
inclut les noms de fichiers commençant
par un ``.'' lors complètement des nom de chemin (pathname).
- allow_null_glob_expansion
- Si
cette variable est activée, le bash
permet aux motifs des noms de chemin
ne correspondant à aucun fichier d'être complétés par une chaîne nulle
plutôt que par leur propre valeur (voir Pathname
expansion ci-dessous).
- histchars
- ce
sont les deux ou trois caractères qui contrôlent le complètement de
l'historique et le découpage en éléments lexicaux (voir HISTORY
EXPANSION ci-dessous). Le premier
caractère est le caractère de complètement de l'historique, c'est-à-dire
le caractère qui signale le début du complètement de l'historique,
normalement ``!''. Le second caractère ou caractère de substitution
rapide (quick substitution)
est utilisé comme abrégé pour exécuter à nouveau la commande précédemment
entrée, en subsitutant une chaîne par une autre dans la commande.
La valeur par défaut est ``^''. Le troisième
caractère est optionnel et indique que le reste de la ligne est un
commentaire lorsqu'il précède un nom (normallement il s'agit de ``#'').
Le caractère de commentaire de l'historique produit un saut vers les
mots suivants d'une ligne. Il n'induit pas nécessairement l'interpéteur
synatxique du shell à traiter le reste d'un ligne comme un commentaire.
- nolinks
- si
cette variable est activée, le shell ne suit pas les liens symboliques
lors des exécutions de commandes qmodifiant le répertoire de travail
courant. Au lieu de cela, elle permet d'utiliser la structure physique
du répertoire. Par défaut, le bash
suit la chaîne des répertoires lorsqu'il
exécute des commandes modifiant le répertoire courant, telles quecd.
Voir aussi la description de l'option -P de la commande interne set
(SHELL
BUILTIN COMMAND ci-dessous).
- hostname_completion_file
-
- HOSTFILE
- contient
le nom d'un fichier dans le même format que /etc/hosts
qui devrait être consulté par le shell
lorsqu'il doit compléter un nom d'hôte. Ce fichier peut être modifié
interactivement; au complétement de nom d'hôte (hostname)
à la suite de la modification, bash
ajoute le contenu du nouveau fichier
à sa base de données existante.
- noclobber
- si
cette variable est activée, le bash n'écrase pas le contenu d'un fichier
existant lorsque les opérateurs de redirection >, >&
et <> sont utilisés. Cette variable
peut être annulée lors de la création de fichiers de sortie en utilisant
l'opérateur de redirection > - au lieu de > (voir aussi l'option
-C de la commande interne set).
- auto-resume
- cette
variable contrôle la manière dont le shell interagit avec un utilisateur
et le contrôle des tâches. Si cette variable existe, les commandes
simples (en un seul mot) sans redirections sont traitées comme des
candidats pour la reprise d'une tâche existante mais arrêtée. Il n'y
a pas d'ambiguïté permise: s'il y a plus d'une tâche commençant avec
la chaîne saisie, le choix se porte sur celle d'accès le plus récent.
Dans ce contexte, le nom
(name)
de la tâche arrêtée est la ligne de commande utilisée pour son démarrage.
Si la variable est posée à exact,
la chaîne fournie doit correspondre exactement au nom d'une tâche
arrêtée; si la valeur est substring,
la chaîne doit correspondre à une sous-chaîne du nom de la tâche arrêtée.
La valeur substring fournit
une fonctionnalité analogue à l'id de job %?
(voir le JOB
CONTROL ci-dessous). Si la valeur
est autre, la chaîne fournie doit être le préfixe du nom d'une tâche
arrêtée; ceci fournit une fonctionnalité analogue à l'id de job %.
- no_exit_on_failed_exec
- si
cette variable existe, un shell non-interactif ne se terminera pas
s'il ne peut exécuter le fichier spécifié dans la commande interneexec.
Un shell interactif ne se termine pas si exec
échoue.
- cdable_vars
- si
cette variable est activée, un argument de la commande interne cd
qui ne serait pas un répertoire sera
considéré comme le nom d'une variable dont le contenu est le répertoire
à modifier.
Next: Courriel
Up: Processus et variables d'environnement.
Previous: Consommation mémoire et CPU:
Table des matières
1-01-2006