3.4 Variables d'environnement¶
- 3.4 Variables d'environnement
- Variables d'environnement
- Que sont-elles ?
- Exemples importants
- Définir des variables globalement
- Le répertoire /etc/env.d
- Le script env-update
- Définir des variables localement
- Variables spécifiques à un utilisateur
- Variables spécifiques à une session
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. |
CLASSPATH | Cette variable contient une liste de répertoires séparés par des deux-points qui contiennent les classes Java. |
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 :
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" CLASSPATH="/opt/blackdown-jre-1.4.1/lib/rt.jar:." 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"
Définir des variables globalement¶
Le répertoire /etc/env.d¶
Pour centraliser les définitons de ces variables, Calculate 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é /etc/env.d/05gcc
est créé par l'ebuild et contient les définitions des variables suivantes :
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, Calculate 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.
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 :
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. 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 (dans les fichiers de /etc/env.d
pris par ordre alphabétique).
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 sûrement que cela se trouvait dans les instructions d'installation :
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 les nouveaux terminaux relisent et prennent en compte les nouvelles variables. Si vous utiliser un gestionnaire de session, passez root et tapez /etc/init.d/xdm restart. Sinon, vous devrez vous déconnecter et revenir dans X pour avoir les nouvelles variables.
Définir des variables localement¶
Variables 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
. Un exemple pour montrer comment étendre PATH
pour un usage local avec ~/.bashrc
:
#(Les deux-points à la fin sans répertoire à leur suite
ajoutent le répertoire courant automatiquement.)
PATH="${PATH}:/home/my_user/bin:"
Quand vous vous reconnecterez, votre variable PATH
sera mise à jour.
Variables 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
variable dans votre session courante en utilisant la commande export. Tant que vous ne vous serez pas déconnecté, la variable utilisera la valeur temporaire. Voici un exemple :
export PATH="${PATH}:/home/my_user/tmp/usr/bin"