Variable d'environnementEn informatique, les variables d’environnement sont des variables dynamiques utilisées par les différents processus d’un système d’exploitation (Windows, Unix, Linux...). Elles servent à communiquer des informations entre les programmes qui ne se trouvent pas sur la même ligne hiérarchique, et qui ont donc besoin d'une convention pour se communiquer mutuellement leurs choix. On parle aussi de variables d'environnement CGI pour un serveur HTTP. Affichage de la liste des variables d'environnementSur DOS et WindowsLa 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 (Note : le rôle de ces variables est expliqué dans les paragraphes suivants). Sur Unix
Modification d’une variable d’environnementSur DOS et WindowsPour modifier une variable d’environnement, il faut saisir cette commande dans l'invite de commandes : SET PATH=%PATH%;c:\WINDOWS\System32\wbem Attention, cela ne fonctionne que sur le processus en cours. Pour modifier une variable d'environnement d'une manière permanente :
Sur UnixPour modifier une variable d’environnement, il faut saisir : PATH=$PATH:./ Attention, cela ne marche que sur le processus en cours.
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). Variable d’environnement WindowsParamètres liés au profil utilisateur%ALLUSERSPROFILE%Indique le répertoire du profil commun à tous les utilisateurs. Exemple de valeurs : C:\ProgramData ou C:\Documents and Settings\All Users Attention à ne pas confondre avec le profil par défaut : C:\Documents and Settings\Default User %APPDATA%Contient les données d’application de l’utilisateur connecté. Exemple de valeurs : C:\Users\Wikipedia\AppData\Roaming ou C:\Documents and Settings\Wikipedia\Application Data %HOMEPATH%Exemple de valeurs : \Users\Wikipedia ou \Documents and Settings\Wikipedia %USERNAME%%USERNAME% contient le nom de l’utilisateur connecté (exemple : Wikipedia). %USERPROFILE%%USERPROFILE% indique le chemin du répertoire contenant la ruche HKEY_CURRENT_USER de l’utilisateur connecté (fichiers NTUSER.DAT et NTUSER.INI). %CD%La variable %CD% n'est pas affichée par la commande SET ; elle donne le chemin d'accès du répertoire courant. %COMPUTERNAME%Contient le nom de l’ordinateur. %ComSpec%Voir variables d’environnement positionnées par le gestionnaire de session (smss.exe). %DATE% et %TIME%Les variables %DATE% et %TIME% ne sont pas affichées par la commande SET ; elles donnent la date et l'heure actuelle de l'ordinateur. %ERRORLEVEL%La variable %ERRORLEVEL% n'est pas affichée par la commande SET ; elle donne le code d'erreur de la dernière commande exécutée (0 ou 1). C'est l'équivalent de la variable $? d'Unix. C'est une commande indispensable pour faire des shell sophistiqués sous Windows (fichiers de commande : extension .bat). Voici deux exemples de code : IF ERRORLEVEL 2 GOTO no_such_file IF %ERRORLEVEL% EQU 2 SET CODE_ERREUR=2 %FP_NO_HOST_CHECK%Voir variables d’environnement positionnées par le gestionnaire de session (smss.exe). %HOMEDRIVE%Valeur par défaut : C: %LOGONSERVER% et %USERDOMAIN%Si l’utilisateur est connecté pour un domaine, %LOGONSERVER% indique le nom du contrôleur de domaine utilisé pour l’authentification, précédé de "\\". Exemple : \\controle_domaine
Si l’utilisateur est connecté pour un groupe de travail (Workgroup), %LOGONSERVER% indique la même chose que %COMPUTERNAME%, précédé de "\\". Exemple : \\PC_Wikipedia %NUMBER_OF_PROCESSORS%Voir variables d’environnement positionnées par le gestionnaire de session (smss.exe). %OS%Voir variables d’environnement positionnées par le gestionnaire de session (smss.exe). %PATHEXT%Voir variables d’environnement positionnées par le gestionnaire de session (smss.exe). Variable d’environnement dont le nom commence par PROCESSOR_*Pour les variables %PROCESSOR_ARCHITECTURE%, %PROCESSOR_IDENTIFIER%, %PROCESSOR_LEVEL% et %PROCESSOR_REVISION%, voir variables d’environnement positionnées par le gestionnaire de session (smss.exe). %ProgramFiles%Cette variable d’environnement indique le chemin d'accès du répertoire des programmes installés de Windows (voir Program Files). Sa valeur par défaut est : C:\Program Files La valeur de cette variable est paramétrée, dans la base de Registre, par la variable ProgramFilesDir dans la clé %ProgramFiles(x86)%Cette variable d’environnement indique le chemin d'accès du répertoire des programmes x86 installés de Windows 64 bits (voir Program Files). Sa valeur par défaut est : C:\Program Files (x86) %PROMPT%Cette variable d'environnement permet de personnaliser l'invite affiché avant la saisie d'une commande. Sa valeur par défaut est : $P$G Elle peut contenir du texte à afficher combiné à des valeurs spéciales dont le code commence par le signe dollar « $ ».
%RANDOM%La variable %RANDOM% n'est pas affichée par la commande SET ; elle génère un nombre pseudo-aléatoire compris entre 0 et la 15e puissance de 2 (32768). %SystemDrive%Cette variable indique la lettre du disque où est installé Windows. Sa valeur par défaut est : C: %SystemRoot%Cette variable d'environnement indique l'emplacement des fichiers systèmes. Elle est paramétrée par la base de Registre : valeur SystemRoot dans la clé Valeurs par défautLa valeur par défaut est :
Variables d'environnement basées sur %SystemRoot%À partir de %SystemRoot%, d'autres variables d'environnement peuvent être positionnées. Pour %PATH%, %COMSPEC%, %TEMP%, %TMP%, %WINDIR%, voir Les variables d'environnement créées par le gestionnaire de session. Répertoires de fichiers temporaires%TMP% et %TEMP%. Un dossier de fichiers temporaires se trouve également dans le répertoire suivant (Windows XP) : C:\Documents and Settings\nom_de_la_session\Local Settings\Temp %windir%Analogue à %SystemRoot% Exemple : C:\Windows Variables d’environnement Unix (ou GNU/Linux)Sous Unix (ou GNU/Linux), les shells utilisent deux types de variables, utilisant la même syntaxe :
Ces dernières sont accédées comme des variables locales et doivent être exportées avec la commande export (pour bash), ou utiliser la commande setenv (csh). Exemple de variables d'environnement sous Unix : CFLAGS et CXXFLAGS pour la compilationVoir CFLAGS Répertoires $HOME, $PWD, $OLDPWD, $TMPDIR
Infopath (pour Emacs)Infopath est une variable d'environnement utilisée par l'Éditeur de texte Emacs. Elle contient la liste des répertoires info. $LANG et $LANGUAGEAffichage des messages d'erreursLa variable $LANG est utilisée par les différents programmes pour déterminer la langue des messages à afficher. Par exemple : $ LANG=fr ls fff ls: fff: Aucun fichier ou répertoire de ce type $ 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. Il peut être intéressant de modifier cette variable pour obtenir un message d'erreur en anglais (par exemple, en exécutant la commande « Affichage de l'éditeur de texte vimLa 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 vim dans la console il faut poser « export LANG=fr.UTF8 » et s'assurer que l'encodage de la console soit fixée à UTF-8 ( Configuration→Encodage). Si l'encodage de la console est fixé à ISO/CEI 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 console est à UTF-8, vim affichera « été », mais la position du curseur ne suivra pas bien. En effet, bien que la console affiche trois caractères, vim en compte cinq (aller à la fin de la ligne avec « $ » placera le curseur trop loin). Comparaison avec WindowsDans Windows, la langue se paramètre avec la base de registre, dans le HKEY_CURRENT_USER, plus exactement dans certaines des sous-clés de ControlPanel\international (l'outil pour le paramétrer est intl.cpl). $LD_LIBRARY_PATHLa variable $LD_LIBRARY_PATH contient une liste de répertoires, 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 Variable de X Window System (pour l'environnement graphique)
Exemple de valeur : :0.0
Exemple de valeur : xterm Variables liées à GNOME (pour l'environnement graphique)$COLORTERMExemple de valeur
$DESKTOP_SESSIONExemple de valeur : default $DESKTOP_STARTUP_IDExemple de valeur dans l'environnement d'un script /home/demo/Bureau/getenv.sh lancé par SpaceFM en tant que gestionnaire de bureau sous LXDE : GTK+ utilise cette variable d'environnement dans le contexte de la notification de démarrage de l'application. Selon les spécifications officielles, l'application GTK+ doit détruire cette variable d'environnement après l'avoir lue, afin de ne pas la transmettre à ses processus fils. Lorsque le programme /home/demo/Bureau/getenv.sh de l'exemple précédemment cité, est démarré automatiquement à l'ouverture de session via un fichier .desktop du répertoire $HOME/.config/autostart, ou bien lorsqu'il est exécuté depuis un émulateur graphique de terminal, alors son environnement ne contient pas cette variable. $GDM_XSERVER_LOCATION et $GDMSESSIONVoir GNOME Display Manager. $GNOME_DESKTOP_SESSIONExemple de valeur : Default $GNOME_KEYRING_SOCKETExemple de valeur : /tmp/keyring-24TGGU/socket Variables liées à KDE (pour l'environnement graphique)Variables liées à GTK+
$LC_ALLVoir i18n. $POSIXLY_CORRECTSi la variable d'environnement $POSIXLY_CORRECT est définie, les commandes GNU/Linux se conformeront à la norme POSIX. Par exemple, GNU grep se conformera à POSIX.2 si cette variable est définie. Voir POSIX#Variable d'environnement POSIXLY CORRECT. Variables liées à SSH
$LOGNAME, $USER et $USERNAMEContient la valeur du nom d'utilisateur de la session actuelle. $SHELL$SHELL indique l'interpréteur shell utilisé par défaut. La valeur habituelle sous linux est /bin/bash (plus rarement /bin/sh). Pour avoir la liste des shell sous Unix, voir catégorie:Shell Unix. Autres variables
Les variables autres que celles d'environnementPour les variables internes, voir (en) Internal Variables. Il existe des variables qui ne font pas partie des variables d'environnement. Par exemple, il peut y avoir :
Variables d'environnement communes à Windows et Unix<PATH> pour l'emplacement des exécutablesLa variable <PATH> contient la liste des répertoire(s) dans lesquels vont être recherchés les fichiers exécutables. On retrouve cette variable sous Windows (%PATH%) et sous Unix et Linux ($PATH). ExempleVous vous placez dans un répertoire quelconque de votre système (via la commande cd). Si vous tentez de taper wikipedia.exe dans la console (ou le terminal), il ne sera pas exécuté car /opt/wikipedia/bin n'est pas dans le PATH. Par contre, si vous tapez /opt/wikipedia/bin/fichier_ex, cela fonctionnera, mais cela est plutôt long à écrire. Il est donc nécessaire d'ajuster la variable d'environnement PATH[réf. souhaitée]. Sous Unix/Linux : $PATHSous Unix et Linux, cette variable est utilisée seulement pour l'emplacement des exécutables (binaire ou script shell). Pour les bibliothèques logicielles, d'autres variables sont utilisées (exemple : $LD_LIBRARY_PATH). Visualiser le $PATHecho $PATH On peut aussi utiliser la commande : printenv PATH Séparateur de $PATH : ":"Le séparateur est le deux-points (:). Modifier temporairement le $PATHAvec le shell bash export PATH=$PATH:/opt/toto/bin Cette modification n'est que temporaire (pour la session en cours). Modifier le $PATH de manière permanenteIl faut donc rendre permanente la modification du PATH en mettant la ligne suivante dans le fichier ~/.bashrc. export PATH=$PATH:/opt/toto/bin Le piège du répertoire courantSous Unix, pour exécuter un fichier qui est dans le répertoire courant, on est en général obligé de préfixer la commande par « ./ », ce qui permet d'indiquer que le fichier est dans le répertoire courant. Cette particularité étonne les utilisateurs qui ont l'habitude de Windows (ou de l'ancien MS-DOS) où on peut appeler directement un programme qui est dans le répertoire courant. Il s'agit d'une mesure de sécurité. À titre d'exemple, si un intrus malveillant parvient à placer un programme néfaste nommé ls dans le répertoire courant, ce programme sera exécuté dès que vous souhaiterez lister le répertoire (au lieu de la commande ls se trouvant normalement dans le répertoire /bin/, qui lui se trouve dans le PATH, mais qui n'est modifiable que par l'administrateur du système). Si malgré tout l'utilisateur souhaite retrouver cette « ergonomie » de Microsoft, il doit ajouter le chemin « ./ » dans son PATH : PATH=$PATH;./ Cette mesure de sécurité a été ré-introduite dans le PowerShell inclus avec Windows à partir de la version 7; pour exécuter un fichier exécutable dans le dossier courant, l'utilisateur doit le précéder de « .\ ». Le $PATH de base dans le profilLa valeur de base de $PATH, pour tous les login, est défini dans le profil : fichier Shell /etc/profile. Sous Mac OS XVisualiser le $PATH(En Bourne shell) echo $PATH Séparateur de $PATH : ":"Le séparateur est le deux-points (:). Modifier temporairement le $PATHexport PATH="$PATH:/opt/toto/bin" Cette modification n'est que temporaire (pour la session en cours). Modifier le $PATH de manière permanenteIl faut rendre permanente la modification du PATH en rajoutant la ligne suivante dans le Profil utilisateur (c'est-à-dire le shell ~/.profile ou ~/.bash_profile selon le type de terminal que vous utilisez). export PATH="$PATH:/opt/toto/bin" Il est aussi possible de modifier directement le PATH du fichier /etc/profile (il faut utiliser sudo ou être en root). Sous Windows : %PATH%Sous Windows, si un exécutable n'est pas à l'emplacement par défaut[1], la variable %PATH% indique dans quels répertoires le chercher. Cette variable est paramétrée via la base de registre, dans la partie configuration de Session Manager (SMSS.EXE) (l'emplacement exact est : Visualiser le %PATH%Dans l'invite de commandes, saisissez la commande : SET path ou ECHO %PATH% Séparateur de %PATH% : point-virguleLe séparateur est le caractère point-virgule : « ; ». Modifier temporairement %PATH%Dans l'invite de commandes, saisissez la commande : SET PATH=%PATH%;c:\opt\wikipedia\bin Cette modification n'est que temporaire (pour l'invite de commandes en cours). Modifier le %PATH% de manière permanenteTrois manières sont possibles : 1- Il faut modifier la variable d'environnement PATH depuis le Panneau de configuration > Système > Avancé > Variables d'environnement > Variables système : Variable Path ⇒ Modifier. Exemple : ajouter ;C:\Batch pour indiquer que Windows doit chercher dans le répertoire C:\Batch pour trouver une application ou un fichier .bat. 2- Utiliser une commande MS-DOS (qui est plus pratique pour une utilisation dans un script), basé sur setx
SETX "%PATH%;C:\Wikipedia\bin" 3- Utiliser une commande MS-DOS (qui est plus pratique pour une utilisation dans un script), qui modifie le Registre.
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /d "%PATH%;C:\Lotus\Notes" /f
Variables d'environnement liées à JavaJAVA_HOMECette 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). Autres variables liées à Java
RéférencesVoir aussiArticles connexes |
Portal di Ensiklopedia Dunia