[ << ]
[ < ]
[ Sommaire ]
[ > ]
[ >> ]
5. Variables d'environnement
Table des matières :
5.a. Variables d'environnement ?
Que sont-elles ?
Une variable d'environnement est un objet nommé qui contient des informations
utilisées par une ou plusieurs applications. Beaucoup d'utilisateurs
(particulièrement les nouveaux Linuxiens) trouvent que c'est un peu trop
compliqué et ingérable. C'est bien sûr faux : en utilisant des variables
d'environnement, on peut changer facilement la valeur d'une configuration pour
une ou plusieurs applications.
Exemples importants
Le tableau suivant liste un certain nombre de variables utilisées par le système
Linux et décrit leur utilisation. Des exemples de valeurs seront présentés après
le tableau.
Variable |
Description |
PATH |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels le système cherche des fichiers exécutables. Si vous entrez le
nom d'un exécutable (tel que ls, rc-update ou emerge),
mais que cet exécutable n'est pas situé dans un des répertoires listés,
votre système ne l'exécutera pas (tant que vous n'aurez pas spécifié le
chemin complet avec ligne de commande, tel que /bin/ls).
|
ROOTPATH |
Cette variable a la même fonction que PATH, mais celle-ci liste les
répertoires qui doivent être parcourus lorsque l'utilisateur root entre une
commande.
|
LDPATH |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels l'éditeur de liens dynamique cherche les bibliothèques.
|
MANPATH |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels la commande man cherche les pages man.
|
INFODIR |
Cette variable contient une liste de répertoires séparés par des deux-points
dans lesquels la commande info cherche les pages info.
|
PAGER |
Cette variable contient le chemin vers le programme utilisé pour lister le
contenu des fichiers (tel que less ou more).
|
EDITOR |
Cette variable contient le chemin vers le programme utilisé pour éditer le
contenu des fichiers (tel que nano ou vi).
|
KDEDIRS |
Cette variable contient une liste de répertoires séparés par des deux-points
qui contiennent les éléments spécifiques à KDE.
|
CONFIG_PROTECT |
Cette variable contient une liste de répertoires séparés par des
espaces qui doivent être préservés par Portage pendant les mises à
jour.
|
CONFIG_PROTECT_MASK |
Cette variable contient une liste de répertoires séparés par des
espaces qui ne doivent pas être préservés par Portage pendant les
mises à jour.
|
Voici un exemple de définition de toutes ces variables :
Exemple de code 1 : Exemple de définitions |
PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"
ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"
LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
MANPATH="/usr/share/man:/usr/local/share/man"
INFODIR="/usr/share/info:/usr/local/share/info"
PAGER="/usr/bin/less"
EDITOR="/usr/bin/vim"
KDEDIRS="/usr"
CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \
/usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \
/usr/share/texmf/tex/platex/config/ /usr/share/config"
CONFIG_PROTECT_MASK="/etc/gconf"
|
5.b. Définir des variables globalement
Le répertoire /etc/env.d
Pour centraliser les définitons de ces variables, la distribution Gentoo utilise le
répertoire /etc/env.d. Dans ce répertoire, vous trouverez un certain
nombre de fichiers tels que 00basic, 05gcc, etc. qui
contiennent les variables requises par les applications mentionnées dans leurs
noms.
Par exemple, quand vous installez gcc, un fichier nommé
05gcc est créé par l'ebuild et contient les définitions des
variables suivantes :
Exemple de code 2 : /etc/env.d/05gcc |
PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2"
MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man"
INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info"
CC="gcc"
CXX="g++"
LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3"
|
Les autres distributions vous disent de changer ou d'ajouter ces variables
d'environnement dans /etc/profile ou ailleurs. Par contre, Gentoo
vous facilite la maintenance et l'administration de ces
variables d'environnement, ce qui vous évite de vous soucier des nombreux
fichiers qui peuvent contenir ces variables d'environnement. (Cela profite
également au système Portage.)
Par exemple, lorsque gcc est mis à jour, le fichier
/etc/env.d/05gcc est aussi mis à jour sans que l'utilisateur ne
fasse quoi que se soit.
Cela n'est pas uniquement profitable à Portage, mais aussi à vous, en tant
qu'utilisateur. Occasionnellement, vous serez amené à définir des variables
d'environnement pour tout le système. Par exemple, avec la variable
http_proxy. Au lieu de vous embêter avec /etc/profile,
vous devez juste créer un fichier (/etc/env.d/99local)
et y entrer vos définitions :
Exemple de code 3 : /etc/env.d/99local |
http_proxy="proxy.server.com:8080"
|
En utilisant le même fichier pour toutes vos variables, vous avez une vue
d'ensemble aisée de toutes les variables que vous avez définies.
Le script env-update
Plusieurs fichiers dans /etc/env.d définissent la variable
PATH. Ce n'est pas une erreur : quand vous lancez
env-update, celui-ci concatènera les définitions avant de mettre à jour
les variables d'environnement. Ainsi, il aide les paquets (et les utilisateurs)
à ajouter leurs propres variables d'environnement sans interférer avec les
valeurs déjà définies.
Le script env-update liste les valeurs des fichiers de
/etc/env.d par ordre alphabétique. Les noms des fichiers dans
/etc/env.d doivent commencer par deux chiffres décimaux.
Exemple de code 4 : Ordre de mise à jour par env-update |
00basic 99kde-env 99local
+-------------+----------------+-------------+
PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"
|
Cette concaténation de définitions pour la même variable n'est réalisée que
pour KDEDIRS, PATH, LDPATH, MANPATH,
INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT,
CONFIG_PROTECT_MASK, PRELINK_PATH et PRELINK_PATH_MASK.
Les autres variables reçoivent uniquement la dernière valeur définie.
Quand vous lancez env-update, le script crée toutes les variables
d'environnement et les place dans /etc/profile.env (qui est utilisé
par /etc/profile). Il extrait aussi les informations de la variable
LDPATH et les utilise pour créer /etc/ld.so.conf. Après
cela, il lance ldconfig pour créer le fichier
/etc/ld.so.cache utilisé par l'éditeur de liens dynamique.
Si vous voulez connaitre le résultat de env-update immédiatement après
son exécution, lancez la commande suivante pour mettre votre système à jour.
Les utilisateurs qui ont installé Gentoo eux-même se souviendront surement
que cela se trouvait dans les instructions d'installation :
Exemple de code 5 : Mettre l'environnement à jour |
# env-update && source /etc/profile
|
Note :
La commande ci-dessus ne met à jour que les variables de votre terminal courant,
des nouvelles consoles et leurs enfants. Donc, si vous êtes sous X11,
vous devrez soit taper source /etc/profile dans chaque nouveau terminal
ouvert, soit relancer X afin que la source des nouveaux terminaux possède les
bonnes variables. Si vous utiliser un gestionnaire de session (xdm, kdm,
gdm...), passez root et tapez /etc/init.d/xdm restart. Sinon, vous devrez
vous déloguer et revenir dans X pour avoir les nouvelles variables.
|
Important :
Vous ne pouvez pas utiliser de variables d'environnement lors d'une définition
de variable. C'est-à-dire que, par exemple, FOO="$BAR" (où $BAR
est une autre variable) est interdit.
|
5.c. Définir des variables localement
Spécifiques à un utilisateur
Vous n'avez pas toujours besoin de définir des variables d'environnement
globalement. Par exemple, vous pourriez avoir besoin d'ajouter
/home/my_user/bin et le répertoire courant (celui dans lequel l'utilisateur se trouve quand il lance une commande) à la variable PATH, mais vous ne voulez
pas que les autres utilisateurs de votre système l'aient aussi dans PATH.
Si vous voulez définir une variable d'environnement localement, vous devriez
utiliser ~/.bashrc ou ~/.bash_profile :
Exemple de code 6 : Étendre PATH pour un usage local avec ~/.bashrc |
PATH="${PATH}:/home/my_user/bin:"
|
Quand vous vous réidentifierez, votre variable PATH sera mise à jour.
Spécifiques à une session
Quelquefois, une définition plus spécifique est requise. Vous voudriez être
capable d'utiliser des binaires d'un répertoire temporaire que vous avez créé
sans utiliser le chemin complet ou éditer ~/.bashrc qui vous
prendrait trop de temps.
Dans ce cas-ci, vous pouvez juste définir la variable PATH dans votre
session courante en utilisant la commande export. Tant que vous ne vous
serez pas déconnecté, la variable PATH utilisera la valeur temporaire.
Exemple de code 7 : Définir une variable d'environnement spécifique à une session |
# export PATH="${PATH}:/home/my_user/tmp/usr/bin"
|
[ << ]
[ < ]
[ Sommaire ]
[ > ]
[ >> ]
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|