Gentoo Logo

[ << ] [ < ] [ 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.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.1 : /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 2.2 : /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 2.3 : 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 pourADA_INCLUDE_PATH, ADA_OBJECTS_PATH, CLASSPATH, KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH, PRELINK_PATH_MASK, PKG_CONFIG_PATH and PYTHONPATH. Les autres variables reçoivent uniquement la dernière valeur définie dans les fichiers de /etc/env.d pris par ordre alphabétique.

Vous pouvez ajouter d'autres variables dans cette liste de variables concaténée en ajoutant le nom de la variables en le séparant soit par DEUX POINTS soit par une ESPACE (ceci égalemen dans un fichier env.d).

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 2.4 : 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 les nouveaux terminaux relisent et prennent en compte les nouvelles 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éconnecter 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 3.1 : É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.

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 3.2 : Définir une variable d'environnement spécifique à une session

# export PATH="${PATH}:/home/my_user/tmp/usr/bin"

[ << ] [ < ] [ Sommaire ] [ > ] [ >> ]


Imprimer

Voir tout

Dernière mise à jour le 18 décembre 2013

Une version originale plus récente datée du 1er juin 2014 existe.

Résumé : Avec Gentoo, vous pouvez facilement gérer les variables d'environnement de votre système. Ce chapitre explique comment faire cela et décrit également les variables les plus courantes.

Sven Vermeulen
Auteur

Grant Goodyear
Auteur

Roy Marples
Auteur

Daniel Robbins
Auteur

Chris Houser
Auteur

Jerry Alexandratos
Auteur

Seemant Kulleen
Développeur Gentoo x86

Tavis Ormandy
Développeur Gentoo Alpha

Jason Huebel
Développeur Gentoo AMD64

Guy Martin
Développeur Gentoo HPPA

Pieter Van den Abeele
Développeur Gentoo PPC

Joe Kallar
Développeur Gentoo SPARC

John P. Davis
Correcteur

Pierre-Henri Jondot
Correcteur

Eric Stockbridge
Correcteur

Rajiv Manglani
Correcteur

Jungmin Seo
Correcteur

Stoyan Zhekov
Correcteur

Jared Hudson
Correcteur

Colin Morey
Correcteur

Jorge Paulo
Correcteur

Carl Anderson
Correcteur

Jon Portnoy
Correcteur

Zack Gilburd
Correcteur

Jack Morgan
Correcteur

Benny Chuang
Correcteur

Erwin
Correcteur

Joshua Kinard
Correcteur

Tobias Scherbaum
Correcteur

Gerald J. Normandin Jr.
Relecteur

Donnie Berkholz
Relecteur

Ken Nowack
Relecteur

Joshua Saddler
Relecteur

Lars Weiler
Contributeur

Xavier Neys
Correcteur, traducteur

Camille Huot
Traducteur

Benjamin Girault
Traducteur

Olivier Fisette
Traducteur

Olivier Roomans
Traducteur

Vincent Strubel
Traducteur

José Fournier
Traducteur

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.