En informatique, les variables d’environnement sont des variables dynamiques utilisées par les différents processus d’un système d’exploitation (Windows, Unix ...etc.).
On parle aussi de variables d'environnement CGI pour un serveur HTTP.
La commande set sans aucun paramètre permet de lister la plupart des variables d’environnement.
Les variables %ERRORLEVEL%, %DATE%, %TIME%, %CD%, %RANDOM% ne sont pas affichées par la commande set (NB : le rôle de ces variables est expliqué dans les paragraphes suivants).
Pour modifier une variable d’environnement (attention, cela ne marche que sur le processus en cours)
set path=%path% ;c:\WINDOWS\System32\wbem
Pour modifier une variable d'environnement d'une manière permanente il faut:
-Modifier l'autoexec.bat avec la commande set sous windows 98.
-Ajouter ou modifier la clé de registre HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment ou HKEY_CURENT_USER\Environement\ sous windows 2000/xp/2003
Il est aussi possible de modifier les variables d'environnement sous l'objet système du panneau de configuration.
Pour modifier une variable d’environnement (attention, cela ne marche que sur le processus en cours)
PATH=$PATH:./
env LD_LIBRARY_PATH=/var/lib ./configure
Pour modifier une variable d'environnement de façon permanente, on peut ajouter une ligne dans le fichier d'initialisation de son shell (~/.bashrc pour Bash, ~/.zshrc pour Zsh)) pour assigner et exporter la variable. Voici un exemple minimal de ~/.bashrc :
# Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi # User specific aliases and functions export LANG=fr_CA.UTF8
Le script d'initialisation du shell est personnel à l'utilisateur. Il est exécuté à chaque fois qu'on se connecte ( soit directement soit par ssh ) et à chaque fois qu'on ouvre une nouvelle console.
Pour que l'assignation de la variable profite à tous les utilisateurs, on peut l'ajouter (à condition d'avoir les droits) dans le fichier d'initialisation global du shell (/etc/profile pour Bash)).
Indique le répertoire du profil commun à tous les utilisateurs.
Exemple de valeurs :
‘’C:\Documents and settings\All Users’’
Attention : Ne pas confondre avec le profil par défaut
‘’C:\Documents and settings\Default User’’
Exemple de valeurs :
‘’C:\Documents and settings\Dupont\Application Data’'
Il contient les données d’application de l’utilisateur connecté
Exemple de valeur
‘’C:\Documents and settings\Dupont’’
%USERNAME% contient le nom de l’utilisateur connecté (exemple : Dupont).
%USERPROFILE% indique le chemin du répertoire contenant la ruche HKEY_CURRENT_USER de l’utilisateur connecté (fichiers NTUSER.DAT et NTUSER.INI)
La variable %CD% n'est pas affichée par la commande set, elle donne le chemin du répertoire courant.
Contient le nom de l’ordinateur
Voir variables d’environnement positionnées par le gestionnaire de session (smss.exe)
Les variables %DATE% et %TIME% ne sont pas affichées par la commande set. Elles donnent la date et l'heure.
La variable %ERRORLEVEL% n'est pas affichée par la commande set, elle donne le code retour de la dernière commande exécutée. C'est l'équivalent de la variable $? d'Unix.
C'est une commande indispensable pour faire des shell sophistiqués sous Windows (fichiers d'extension .BAT)
Deux exemples de code
if errorlevel 2 goto no_such_file IF ERRORLEVEL 2 SET CODE_ERREUR=2
Voir Syntaxe du errorlevel dans un batch
Voir variables d’environnement positionnées par le gestionnaire de session (smss.exe)
Valeur par défaut
C:
Si l’utilisateur est connecté pour un domaine,
‘’\\ctrl_dom’’
Si l’utilisateur est connecté pour un groupe de travail (workgroup),
\\PCDupont
Voir variables d’environnement positionnées par le gestionnaire de session (smss.exe)
Voir variables d’environnement positionnées par le gestionnaire de session (smss.exe)
Voir variables d’environnement positionnées par le gestionnaire de session (smss.exe)
Pour %PROCESSOR_ARCHITECTURE%, %PROCESSOR_IDENTIFIER%, %PROCESSOR_LEVEL%,%PROCESSOR_REVISION%, voir variables d’environnement positionnées par le gestionnaire de session (smss.exe)
Cette variable d’environnement indique le chemin du répertoire des programmes installés de Windows.
Sa valeur par défaut est :
‘’C:\Program Files’’
Sa valeur par défaut est
$P$G
La variable %RANDOM% n'est pas affichée par la commande set, elle génère un nombre pseudo-aléatoire.
Exemple de valeur
Console
Valeur par défaut
‘’C:’’
Voir %SystemRoot%
%TMP% et %TEMP%
Analogue à %systemRoot%
Exemple de variables d'environnement sous Unix
La variable $? n'est pas affichée par la commande env. Cela correspond au code retour de la dernière commande effectuée.
$# indique le nombre d'arguments.
La variable $_ indique le nom du dernier argument traité par la dernière commande.
Voir CFLAGS
La variable $LANG est utilisée par les différents programmes pour déterminer la langue des messages à afficher. Par exemple :
a@localhost ~]LANG=fr ls fff ls: fff: Aucun fichier ou répertoire de ce type a@localhost ~]LANG=en ls fff ls: fff: No such file or directory
Ces différentes traductions se trouvent dans les fichiers .mo des sous-répertoires de /usr/share/locale .
La variable $LANG sert aussi à vim pour déterminer l'encodage à utiliser. Supposons le fichier .txt contenant comme seule ligne 'été' encodée en UTF-8. Pour éditer ce fichier avec vi dans la konsole il faut poser 'export LANG=fr.UTF8' et s'assurer que l'encodage de la konsole soit fixée à UTF-8 ( Configuration->Encodage).
Si l'encodage de la konsole est fixé à ISO 8859-1, vim affichera 'été'. Si la variable $LANG ne précise pas l'encodage utf-8, par exemple $LANG=fr, mais que l'encodage de la konsole est à UTF-8, vim affichera 'été', mais la position du curseur ne suivra pas bien. En effet, bien que la konsole affiche trois caractères, vim en compte cinq (essayez d'aller à la fin de la ligne avec $, le curseur ira trop loin).
La variable $LD_LIBRARY_PATH contient une liste de répertoire, séparés par des : , où se trouvent les bibliothèques qui ne sont pas installées dans les répertoires par défaut ( /usr/lib et /usr/local/lib n'ont pas à être indiqués dans $LD_LIBRARY_PATH ).
Lors de l'exécution d'une application liée dynamiquement à une bibliothèque, la bibliothèque est d'abord recherchée dans les répertoires par défaut, puis dans les répertoires énumérés dans la variable $LD_LIBRARY_PATH en ordre d'apparition.
Si la bibliothèque n'est pas trouvée, un message d'erreur semblable à celui-ci sera lancé lors de l'exécution :
le_nom_du_binaire: error while loading shared libraries: libXX.so.0: cannot open shared object file: No such file or directory
Exemple de valeur
:0.0
Exemple de valeur
xterm
Exemple de valeur
Exemple de valeur:
default
A compléter
Voir GNOME Display Manager
Exemple de valeur
Default
Exemple de valeur
/tmp/keyring-24TGGU/socket
A compléter
A compléter
Si la variable d'environnement $POSIXLY_CORRECT est définie, les commandes Linux se conformeront à la norme POSIX.
Par exemple, la commande linux grep se conformera à POSIX.2 si cette variable est définie.
Voir POSIX#Variable d'environnement POSIXLY_CORRECT.
A compléter
$SHELL indique l'interpréteur shell utilisé par défaut. La valeur habituelle sous linux est
/bin/bash
Sur certaines versions d'Unix, c'est un shell plus primitif qui est installé par défaut. Pour avoir la liste des shell sous Unix, voir catégorie:Shell Unix.
Pour les variables internes, voir (en) Variables
Il existe des variables qui ne font pas partie des variables d'environnement. Par exemple, sur la version Sarge de la distribution debian, il peut y avoir :
La variable
Cette variable d'environnement n'est définie que si Java est installé sur l'ordinateur correspondant.
JAVA_HOME indique le répertoire contenant l'arborescence des fichiers nécessaires pour la machine virtuelle Java (classe, bibliothèques logicielles. ...etc...). Voir chargeur de classe Java.
Pour le cas particulier de Windows, voir variables d’environnement positionnées par le gestionnaire de session (smss.exe)