Variables d'environnement
Updated 7 Novembre 2026
Cette page s'applique à Portage 3.0.82 et Calculate Utilities 3.8.
Introduction
Une variable d'environnement est un objet nommé qui contient des informations utilisées par une ou plusieurs applications. Grâce aux variables d'environnement, vous pouvez facilement modifier la configuration d'un ou plusieurs programmes.
Exemples importants
Le tableau ci-dessous énumère un certain nombre de variables utilisées dans un système Linux et décrit leur fonction. Des exemples de valeurs sont donnés après le tableau.
| Variable | Description |
|---|---|
| PATH | Liste de répertoires séparés par deux points, où le système recherche les fichiers exécutables. Si vous saisissez le nom d'un fichier exécutable (ls, rc-update ou emerge, par exemple) qui n'est présent dans aucun des répertoires listés, le système ne l'exécutera pas - sauf si la commande est donnée avec son chemin complet, par exemple /bin/ls. |
| ROOTPATH | Même fonction que PATH, mais elle ne liste que les répertoires recherchés lorsqu'un utilisateur disposant des privilèges root saisit des commandes. |
| LDPATH | Liste de répertoires séparés par deux points, où l'éditeur de liens dynamiques recherche les bibliothèques. |
| KDEDIRS | Liste de répertoires séparés par deux points, contenant les ressources KDE. |
| CONFIG_PROTECT | Liste de répertoires séparés par des espaces, que Portage protège lors de la mise à jour des paquets. |
| CONFIG_PROTECT_MASK | Liste de répertoires séparés par des espaces, que Portage ne devrait pas protéger lors de la mise à jour des paquets. |
Voir ci-dessous un exemple montrant comment toutes ces variables peuvent être définies :
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" 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" # Répertoires protégés lors de la mise à jour des paquets. CONFIG_PROTECT="/etc /usr/share/config /var/bind /var/calculate/etc" # Répertoires qui ne sont PAS protégés lors de la mise à jour des paquets. CONFIG_PROTECT_MASK="/etc/gconf"
Définition globale des variables
Le répertoire /etc/env.d
Calculate Linux centralise ces définitions de variables dans le répertoire /etc/env.d. Il contient bon nombre de fichiers - 50baselayout ou gcc/config-x86_64-pc-linux-gnu, par exemple : chacun contient les variables nécessaires au programme dont il porte le nom.
Par exemple, lorsque sys-devel/gcc est installé, l'ebuild crée le fichier /etc/env.d/gcc/x86_64-pc-linux-gnu-16, où 16 est le numéro de version du compilateur :
GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/16" LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/16:/usr/lib/gcc/x86_64-pc-linux-gnu/16/32" MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/16/man" INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/16/info" STDCXX_INCDIR="g++-v16" CTARGET="x86_64-pc-linux-gnu" GCC_SPECS="" MULTIOSDIRS="../lib64:../lib"
Ce répertoire contient également /etc/env.d/gcc/config-x86_64-pc-linux-gnu, dont l'unique ligne CURRENT=x86_64-pc-linux-gnu-16 indique la version actuelle du compilateur.
D'autres distributions invitent souvent l'administrateur système à modifier ou à ajouter des définitions de variables d'environnement dans /etc/profile ou ailleurs. Calculate, au contraire, simplifie la maintenance des variables d'environnement et leur traitement dans Portage : vous n'avez pas à garder la trace des nombreux fichiers dans lesquels elles peuvent apparaître.
Par exemple, lorsque sys-devel/gcc est mis à jour, les fichiers correspondants dans /etc/env.d/gcc sont mis à jour automatiquement, sans que l'administrateur ait rien à faire.
Parfois, l'administrateur doit néanmoins définir une variable globalement - http_proxy, par exemple. Au lieu de modifier /etc/profile, créez le fichier /etc/env.d/99local et écrivez-y la définition :
/etc/env.d/99local
http_proxy="proxy.server.com:8080"
Conserver toutes ses propres variables dans un seul fichier donne à l'administrateur un aperçu rapide de tous les paramètres qu'il a définis.
Le script env-update
Plusieurs fichiers de /etc/env.d ajoutent des définitions à la variable PATH - et ce n'est pas une erreur : lors de l'exécution de env-update, ces définitions sont fusionnées, puis chaque variable d'environnement est mise à jour de manière atomique. Ainsi, les paquets (et les administrateurs système) peuvent facilement ajouter leurs propres valeurs sans affecter les valeurs existantes.
Le script env-update fusionne les valeurs dans l'ordre alphabétique des noms de fichiers de /etc/env.d - les noms de fichiers doivent commencer par deux chiffres décimaux. Exemple de l'ordre de mise à jour :
09sandbox 50baselayout 51dconf
+------------+----------------+-----------+
CONFIG_PROTECT_MASK="/etc/sandbox.d /etc/gentoo-release /etc/dconf ..."
Toutes les variables ne sont pas fusionnées - seules les suivantes le sont : ADA_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 et PYTHONPATH. Toute autre variable prend la valeur définie dans le fichier qui vient en dernier par ordre alphabétique dans /etc/env.d.
Vous pouvez ajouter une variable à la liste des variables fusionnées en ajoutant son nom à COLON_SEPARATED ou SPACE_SEPARATED - là encore, dans un fichier de /etc/env.d.
Lorsque vous exécutez env-update, celui-ci crée toutes les variables d'environnement et les écrit dans /etc/profile.env, que /etc/profile utilise. De plus, /etc/ld.so.conf est généré à partir de la valeur LDPATH, après quoi ldconfig est exécuté pour reconstruire /etc/ld.so.cache, nécessaire à l'éditeur de liens dynamiques.
Pour que les modifications prennent effet immédiatement après env-update, mettez à jour l'environnement de la session en cours :
env-update && source /etc/profile
Только для текущей сессии
La commande ci-dessus met à jour les variables uniquement dans le terminal courant, dans les nouvelles consoles et dans leurs descendantes. Si vous travaillez sous X11, exécutez source /etc/profile dans chaque nouveau terminal, ou redémarrez X pour que tous les nouveaux terminaux récupèrent les valeurs mises à jour. Si vous utilisez un gestionnaire de connexion, vous devez devenir un utilisateur disposant des privilèges root et redémarrer le service /etc/init.d/xdm.
Без подстановки одних переменных в другие
Vous ne pouvez pas utiliser de variables shell lors de la définition de variables : une entrée comme FOO="$BAR", où BAR est une autre variable, ne fonctionnera pas.
Variables par paquet
Par défaut, la compilation des paquets utilise les variables d'environnement définies dans make.conf - CFLAGS et MAKEOPTS, par exemple. Parfois, des paquets individuels ont besoin de valeurs différentes. Dans Calculate, le fichier /etc/portage/package.env n'existe pas par défaut - créez-le vous-même.
Portage prend en charge ces réglages via des fichiers d'environnement : /etc/portage/package.env énumère les paquets qui ont besoin de variables de remplacement, ainsi que l'identifiant de l'ensemble ; Le format de la ligne est [HTML_REMOVED] [HTML_REMOVED]. L'identifiant est choisi librement, et Portage recherche un fichier portant exactement le même nom (sensible à la casse) dans le répertoire /etc/portage/env. Ce mécanisme complète la structure de répertoires de /etc/portage/make.conf décrite sur la page Configurer votre système à l'aide de variables.
Pour activer les drapeaux de compilation de débogage pour un paquet individuel, définissez les variables dans le fichier /etc/portage/env/debug-cflags (le nom du fichier reflète la finalité de l'ensemble). Si le répertoire /etc/portage/env n'existe pas encore, créez-le :
mkdir /etc/portage/env
# Ajoutez -ggdb à CFLAGS pour le débogage CFLAGS="-O2 -ggdb -pipe" FEATURES="${FEATURES} nostrip"
Ensuite, 'marquez' le paquet en ajoutant à /etc/portage/package.env une ligne qui lui applique l'ensemble debug-cflags :
media-video/mplayer debug-cflags
La fonctionnalité nostrip et les autres options de FEATURES sont décrites sur la page Fonctionnalités Portage.
Définition locale des variables
Variables d'utilisateur
Vous n'avez pas toujours besoin de définir une variable globalement. Par exemple, vous pouvez ajouter à la variable PATH le répertoire /home/my_user/bin et le répertoire de travail courant, pour vous seul, sans modifier le PATH des autres utilisateurs du système. Pour les définitions locales, utilisez ~/.bashrc (pour toutes les sessions interactives du shell) ou ~/.bash_profile (pour les sessions de connexion) :
~/.bashrc
# Un deux-points non suivi d'un répertoire indique le répertoire de travail courant PATH="${PATH}:/home/my_user/bin:"
Lorsque vous vous déconnecterez et que vous vous reconnecterez, la variable PATH sera mise à jour.
Variables de session
Parfois, vous avez besoin de définitions encore plus limitées. Par exemple, un utilisateur peut avoir besoin de lancer des programmes depuis un répertoire temporaire - sans saisir leurs chemins complets et sans modifier temporairement ~/.bashrc.
Dans ce cas, définissez simplement la variable PATH pour la session en cours avec export : jusqu'à la fin de la session, la variable utilisera les valeurs temporaires.
export PATH="${PATH}:/home/my_user/tmp/usr/bin"