Variables d'environnement

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%

Sommaire

Introduction

Linux utilise une liste de variables d'environnement pour caractériser l'environnement de travail d'un usager. Il y a divers types de variables, les variables de chemins sont parmi les variables les plus utilisés.

Pour afficher le contenu d'une variable, il suffit d'entrer la commande (par exemple pour la variable PATH) :

[nom@serveur $] echo $PATH


Les commandes suivantes illustrent comment modifier une variable d'environnement et comment ajouter un chemin ($HOME/bin) à la fin d'une variable de chemins respectivement. En Bash les commandes sont :

 
 [nom@serveur $] export TMPDIR=$HOME/tmp
 [nom@serveur $] export PATH=$PATH:$HOME/bin
 


En tcsh :

 
 [nom@serveur $] setenv TMPDIR $HOME/tmp
 [nom@serveur $] setenv PATH $PATH:$HOME/bin
 


Vous aurez donc noté que lorsqu'on écrit un signe de dollar ($) devant le nom de la variable, c'est pour accéder au contenu de la variable en question. Il est également possible d'ajouter du contenu à une variable comme on le fait pour PATH dans l'exemple ci-dessus. Ceci est très utile pour les variables dites de chemins.

Pour connaître la liste des variables d'environnement définis sur votre système vous pouvez utiliser la commande :

[nom@serveur $] printenv


Variables de chemins

Les variables de chemins contiennent une liste de chemins de répertoires séparés par le symbole « : ». C'est dans ces chemins que le système cherche les outils ou les bibliothèques. Entre autre lorsque vous créez vos propres modules, vous aurez à modifier ces variables d'environnement pour adapter votre environnement afin d'utiliser l'outil désiré. Voici les principales variables à modifier :

Variables pour l'exécution d'un code

Un piège courant concernant ces variables vient du fait que les changements à ces variables peuvent être faits dans une session courante et pas forcément dans les autres sessions. Lorsque vous soumettez un calcul, celui-ci est exécuté sur un nœud (ou plusieurs nœuds) différent et donc dans une session différente. Il faut donc vous assurer que ces variables y sont bien définies.

PATH
Liste des répertoires où le système cherche les commandes.
Exemple dans un module : prepend-path PATH $root/bin
LD_LIBRARY_PATH
Liste des répertoires où le système cherche les bibliothèques lors de l'exécution d'un code. Requis pour les bibliothèques dynamiques (.so)
Ex : prepend-path LD_LIBRARY_PATH $root/lib

Variables pour la compilation

CPATH
Liste des répertoires où le précompilateur cherche pour les fichiers d'entête (fonctionne avec Gnu et Intel). Ceux-ci sont recherchés si le précompilateur ne trouve pas l'entête dans les répertoires indiqué par les options -I des compilateurs.
Ex : prepend-path CPATH $root/include
FPATH
Même chose que la variable précédente, mais pour les codes Fortran et les fichiers .mod.
C_INCLUDE_PATH
Même chose que CPATH, toutefois ces répertoires ne seront recherchés que si le fichier d'entête ne se trouve ni dans ceux indiqués par -I, ni dans ceux indiqués par CPATH, ni dans les répertoires par défaut du système.
CPLUS_INCLUDE_PATH
Très semblable à C_INCLUDE_PATH, mais pour le compilateur C++. Notez que les compilateurs C++ n'utilisent pas le contenu de C_INCLUDE_PATH, même pour les fichiers d'entête provenant du C. Il est donc important de définir CPLUS_INCLUDE_PATH si un fichier d'entête C peut être directement utilisé en C++.
LIBRARY_PATH
Liste des répertoires où l'éditeur de liens (ld) cherche les bibliothèques lors de la compilation d'un code (à la fois pour les .so et les .a). Ces répertoires seront utilisés seulement si la bibliothèque n'est pas trouvée dans les répertoires indiqués par les options -L des compilateurs.

Autres variables

PYTHONPATH
Liste des répertoires utilisés par Python pour la recherche d'une paquetage (commande import).
Ex : prepend-path PYTHONPATH $root/lib/python2.7/site-packages
PERL5LIB
Liste des répertoires utilisés par Perl version 5 pour la recherche d'un paquetage.
Ex : prepend-path PERL5LIB $root/lib64/perl5
MANPATH
Liste des répertoires où le système cherche les manuels d'utilisation (utilisé pour la commande man).
Ex : append-path MANPATH $root/share/man
PKG_CONFIG_PATH
(Moins fréquent) Liste des répertoires utilisés par le gestionnaire de paquets pkg-config pour interroger des bibliothèques (utile pour la mise à jour de paquetage).
Ex : prepend-path PKG_CONFIG_PATH $root/lib/pkgconfig

Variables à valeur unique

HOME
Dossier par défaut lorsque vous vous connectez. Ce dossier contient plusieurs fichiers de configuration, donc il ne faut pas modifier la valeur de cette variable.
TMPDIR
Dossier où écrire des fichiers temporaires. Cette variable est utilisée par certains outils. Il est également une bonne pratique de l'utilisée dans vos codes pour l'écriture de fichiers temporaires.
Ex : export TMPDIR=$HOME/tmp
SHELL
Type d'interpréteur de commandes utilisé. Cette variable doit contenir le nom de l'interpréteur avec adresse complète.
Ex : export SHELL=/bin/tcsh
DISPLAY
Cette variable est utile sur les nœuds interactifs pour travailler en mode graphique.
Ex : export DISPLAY=localhost:10.0

Variables d'environnement Moab

Pour la liste des variables d'environnement définies par Moab, voir la section suivante.

Variables d'environnement Torque/PBS

Pour la liste des variables d'environnement définies par Torque/PBS, voir la section suivante.


Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager