Des questions sur
PATH
sont très fréquents ici, et dans la plupart des cas, les réponses sont très similaires les unes aux autres. À l'avenir, il serait bien d'avoir une bonne Q/A pour cela.
La question est donc la suivante: Quelles sont les variables d'environnement, telles que l'exécutable PATH
, et comment puis-je les modifier et les utiliser sur les principaux systèmes d'exploitation?
Une bonne réponse comprendrait une explication simple de la signification des variables d’environnement et en particulier de la variable PATH
pour le système d’exploitation, ainsi que des instructions simples sur la manière de les définir et de les lire en conséquence.
Les variables d'environnement contiennent des valeurs liées à l'environnement actuel, comme le système d'exploitation ou les sessions utilisateur.
L'un des plus connus s'appelle PATH
sous Windows, Linux et Mac OS X. Il spécifie les répertoires dans lesquels les programmes exécutables * se trouvent sur la machine et peuvent être démarrés sans connaître ni saisir le chemin d'accès complet au fichier de la commande. ligne. (Ou sous Windows, la boîte de dialogue Exécuter du menu Démarrer ou +R).
Sous Linux et Mac OS X, il contient généralement tous les répertoires bin
et sbin
pertinents pour l'utilisateur actuel. Sous Windows, il contient au moins les répertoires C:\Windows
et C:\Windows\system32
. C’est pourquoi vous pouvez exécuter calc.exe
ou notepad.exe
à partir de la ligne de commande ou Exécuter , mais pas firefox.exe
. (Firefox se trouve dans C:\Program Files\Mozilla Firefox
. Pour plus d'informations sur la manière d'inclure Firefox, allez ici .)
Par exemple, taper calc
(le .exe
peut être omis) dans la ligne de commande sous Windows pour démarrer la calculatrice Windows.
* Vous pouvez ajouter un support pour les extensions de fichier autres que .exe
en modifiant %PATHEXT%
.
D'autres variables peuvent indiquer aux programmes le type de terminal utilisé (TERM
sous Linux/Mac OS X) ou, sous Windows, l'emplacement du dossier Windows (par exemple, %WINDIR%
est C:\Windows
).
Sous Windows, Linux et Unix, il est possible de créer de nouvelles variables d'environnement, dont les valeurs sont ensuite mises à la disposition de tous les programmes au lancement.
Vous pouvez l'utiliser lorsque vous écrivez des scripts ou des programmes installés ou déployés sur plusieurs ordinateurs et que vous devez faire référence à des valeurs spécifiques à ces ordinateurs. Un effet similaire peut être obtenu à l'aide de paramètres de configuration spécifiques à un programme, mais il est plus facile d'utiliser une variable d'environnement si plusieurs programmes doivent accéder à la même valeur.
Ouvrez Control Panel » System » Advanced » Environment Variables
.
Tapez control sysdm.cpl,,3
dans la boîte de dialogue Exécuter (+R) et cliquez sur Environment Variables
.
Pour éditer les variables utilisateur, vous pouvez aussi taper
%windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
dans la boîte de dialogue Exécuter.
Cliquez avec le bouton droit sur (My) Computer et cliquez sur Propriétés, ou appuyez simplement sur +Break.
Advanced » Environment Variables
.Advanced system settings » Environment Variables
.Il existe de nombreuses autres façons d'atteindre le même endroit, par exemple en tapant "variables d'environnement" dans le champ de recherche Menu Démarrer/Écran, etc.
Les variables d'environnement dans Windows sont séparées en valeurs spécifiques à l'utilisateur et à la machine/système. Vous pouvez voir et éditer leurs valeurs ici. Au lancement, leurs valeurs actuelles sont mises à la disposition de tous les programmes.
Il existe également Rapid Environment Editor , qui permet de définir et de modifier les variables d'environnement dans Windows sans avoir à approfondir les paramètres système. Un autre programme open source pour Windows permettant de modifier très facilement l’environnement de chemins est Path Editor .
Les variables d'environnement dans Windows sont indiquées par des signes de pourcentage (%) entourant le nom:
%name%
Pour afficher la valeur d'une variable d'environnement dans cmd.exe
, tapez echo %name%
.
C:\>echo %USERPROFILE%
C:\Users\Daniel
Pour créer/définir une variable, utilisez set varname=value
:
C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures
C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2
Pour ajouter/ajouter une variable, utilisez set varname=value;%varname%
:
C:\>set Penguins=C:\Linux
C:\>set Penguins=C:\Windows;%Penguins%
C:\>echo %Penguins%
C:\Windows;C:\Linux
Les variables d'environnement définies de cette manière sont disponibles pendant (le reste de) la durée du processus d'invite de commande dans lequel elles sont définies et sont disponibles pour les processus démarrés après la définition des variables.
Pour créer/définir une variable de manière permanente , utilisez setx varname "value"
:
C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"
[Restart CMD]
C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures
Contrairement à set
name__, il n'y a pas de signe égal et la valeur doit être placée entre guillemets si elle contient des espaces. Notez que les variables peuvent se développer en une chaîne avec des espaces (par exemple, %PATH%
devient C:\Program Files
), il est donc préférable d'inclure des guillemets autour des valeurs contenant des variables.
Vous devez ajouter manuellement setx
aux versions de Windows antérieures à Vista.
Windows XP Outils de support du Service Pack 2
Ici est une liste de variables d’environnement par défaut , qui sont intégrées à Windows. Voici quelques exemples: %WINDIR%
, %SystemRoot%
, %USERPROFILE%
et %APPDATA%
. Comme la plupart des noms dans Windows, ceux-ci ne sont pas sensibles à la casse.
Les variables d’environnement sous Linux sont précédées du signe dollar ($) tel que $ HOME ou $ HOSTNAME. Beaucoup de variables connues et standard sont énoncées en majuscules pour signifier cela. N'oubliez pas que les noms de variable sont sensibles à la casse, ce qui signifie que $ User et $ USER ne sont absolument pas liés du point de vue du shell.
Les dérivés Unix définissent des variables système dans les scripts Shell situés principalement dans le dossier /etc
, mais des valeurs spécifiques à l'utilisateur peuvent être attribuées à ces variables dans des scripts situés dans le dossier de base (par exemple, /etc/profile
, $HOME/.bash_profile
). Le fichier .profile
du dossier d’accueil est un emplacement courant pour définir les variables utilisateur.
Définition des variables
Ces fichiers sont des scripts Shell normaux et peuvent contenir plus que des déclarations de variables d’environnement. Pour définir une variable d'environnement, utilisez export
name__. Pour afficher les variables d’environnement actuellement définies dans un terminal, exécutez env
name__.
La commande export
est un moyen standard de définir des variables. La syntaxe est très intuitive. Le résultat est identique pour ces deux lignes, mais la première alternative est préférable au cas où la portabilité au pré-POSIX Bourne Shell serait nécessaire.
var=value; export var
export var=value
Le shell C et ses descendants utilisent une syntaxe complètement différente. la commande est setenv
name__.
Voir le projet de documentation Linux, Path HOWTO pour une discussion plus approfondie sur ce sujet.
Peut-être contrairement aux idées reçues, OS X est plus "Unix" que Linux. En plus des fichiers déjà mentionnés, $ PATH peut être modifié dans ces fichiers:
/etc/paths
contient tous les répertoires par défaut ajoutés au chemin, tels que /bin
et /usr/sbin
./etc/paths.d
- couramment utilisé par les installateurs pour rendre les fichiers exécutables qu'ils fournissent disponibles à partir du shell sans toucher aux fichiers de configuration spécifiques au système ou à l'utilisateur. Ces fichiers contiennent simplement un chemin par ligne. Par exemple,/Programmes/Mozilla/Calendar/bin.Variables d'environnement sous XP
Windows XP Outils de support du Service Pack 2 (Inclutsetx
name__)
Variables d'environnement dans Windows Vista et Windows 7
Ajout d'exécutables à la boîte de dialogue Exécuter
Conseils Mac OSX - Définition des variables d’environnement
TLDP: Path Howto
Ce billet est d’un point de vue plus technique que celui de Daniel, mais n’explique pas autant les concepts.
Le article Wikipedia est également une excellente référence.
Dans la plupart des interpréteurs de commandes, les variables d'environnement temporaires sont définies à l'aide des commandes export
(sh, bash, zsh) ou setenv
(csh, tcsh).
Exemples d'ajout de $HOME/bin
à $PATH
en bash ou en zsh:
export PATH="$HOME/bin:$PATH"
(Dans ce cas particulier, export
est inutile car PATH
fait déjà partie de l'environnement.)
csh, tcsh:
setenv PATH "$HOME/bin:$PATH"
Les variables d'environnement persistantes peuvent être définies en plusieurs étapes distinctes:
S'identifier:
Configuration de la session de connexion: Linux pam_env
, qui se lit généralement à partir de /etc/environment
Connexions au terminal: fichiers "profil" du shell.
bash
utilise /etc/profile
et le premier parmi: ~/.bash_profile
, ~/.bash_login
, ~/.profile
. Page de manuel bash(1)
section Invocation .
Souvent, le fichier de profil de l'utilisateur inclut également un appel explicite pour ~/.bashrc
.
zsh
: Page de manuel zsh(1)
section Fichiers de démarrage/arrêt .
csh
et autres coquilles: voir les pages de manuel appropriées.
Connexions graphiques: Pas sûr; peut varier en fonction du gestionnaire de connexion. GDM semble lire ~/.profile
dans mon système.
Ouverture d'une fenêtre de terminal:
bash
utilise /etc/bash.bashrc
et ~/.bashrc
.Dans l'invite de commande (cmd.exe
), utilisez set name=value
pour modifier les variables d'environnement de cette fenêtre.
Pour ajouter c:\bin
à %PATH%
, utilisez:
set path=%path%;c:\bin
Cela ne concerne que le processus cmd.exe
et tous les processus new lancés à partir de celui-ci.
Pour apporter des modifications persistantes, utilisez Panneau de configuration → Système → Avancé → Variables d'environnement . ( docs )
Remarque: Alors que les paramètres utilisateur remplacent normalement les paramètres système, la variable PATH
est gérée spécialement: les paramètres système et utilisateur sont fusionnés dans la valeur finale.
Les modifications sont stockées dans la base de registres (voir ci-dessous) et s'appliquent instantanément à tous les processus new créés par Explorer (le shell graphique), par exemple via le menu Démarrer.
Les variables d'environnement à l'échelle du système sont conservées dans le registre, HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
, et chargées au démarrage du système.
L'environnement utilisateur est conservé dans HKCU\Environment
et chargé lors de la connexion de l'utilisateur.
Par défaut, le système recherche également les commandes set
dans le fichier AUTOEXEC.NT
.
Dans l'invite MS-DOS (command.com
), utilisez set name=value
, comme dans WinNT.
De même, l'exécution interactive de set
n'affecte que cette instance command.com
, ainsi que tout nouveau processus lancé à partir de celle-ci.
Pour apporter des modifications persistantes, ajoutez ou modifiez des lignes set
appropriées dans C:\AUTOEXEC.BAT
, puis redémarrez.
Explorer.exe
à partir de la fenêtre d’invite MS-DOS.(Ne pouvait pas résister.)
DCL n'a pas de notion de "chemin", mais diverses définitions de symboles et de commandes peuvent être insérées dans SYS$LOGIN:LOGIN.COM
.
Pour les variables d'environnement bash
Shell PATH
global (non terminal), je suis la convention utilisée dans mon installation Ubuntu VM - les autres shells varieront:
Mise en garde: Toute la séquence de démarrage du shell, dans laquelle les fichiers .bashrc
, .profile
, etc. sont générés, dans quel ordre?, Quand dois-je me reconnecter pour obtenir la visibilité sur les variables, alias, etc. nouvellement définis? un shell de connexion, interactif et non interactif - j’utilise cron
? et pourquoi, quand je fais un . ~/.bashrc
, ma stupide variable PATH
augmente-t-elle de plus en plus? sont les questions clés qui me viennent à l’esprit lorsque je pense à ma variable PATH
.
En fait, je viens de réécrire complètement mon ensemble de fichiers de démarrage bash en prenant des idées des fichiers squelettes Ubuntu et cygwin, et voici quelques-uns de mes sites in:
PATH
et d’autres variables d’environnement global (c.-à-d. LD_LIBRARY_PATH
) dans le .profile
;~/.profile
pour trouver $HOME/.bashrc
si elle existe;~/.bashrc
avec un test pour l'exécution interactive, quittez sinon;shopt
's, configuration de l’invite, contrôle de l’historique, configuration du terminal, définition de la fonction, etc. (configuration liée interactive) dans la partie de ~/.bashrc
qui est protégée pour ne fonctionner qu’en mode interactif;.profile
et .bashrc
fonctionne comme prévu. Autrement dit, sauf indication contraire expresse, supprimez ~/.bash_profile
& ~/.bash_login
;~/.bashrc
, puis je le source simplement avec un . ~/.bashrc
pour obtenir ces modifications dans mon shell actuel.PATH
, je dois modifier et générer mon ~/.profile
;.profile
.C'est mes 2 cents sur ce sujet.
Q: QUELLES sont les variables d'environnement?
A: Environment Les variables sont similaires aux variables de tout langage de programmation. Dans le cas des systèmes Windows ou Unix, ils stockent diverses valeurs permettant aux programmes et aux tâches d'obtenir les informations nécessaires sur le système d'exploitation ou les informations "Environnement". Par exemple:
USERPROFILE: répertoire des utilisateurs dans les fichiers du système d'exploitation.
MAIL: où le courrier d'un utilisateur peut être trouvé dans les fichiers du système d'exploitation.
Q: QU'EST-CE que la variable PATH en particulier?
A: La variable PATH définit les chemins de répertoire à rechercher lorsque des commandes sont exécutées, aussi bien pour les commandes RUN que pour les appels internes à partir de programmes. Cela évite à un programme de connaître son emplacement d'installation pour appeler d'autres processus exécutables.
Il examine la variable PATH du système d’environnement Windows et teste chaque emplacement pour l’exécutable donné. Ainsi, l'ajout d'un emplacement à la variable PATH permet d'appeler directement un exécutable.
Selon cet article article Wikipedia :
Lorsqu'une commande est entrée dans une commande Shell ou qu'un appel système est exécuté par un programme pour exécuter un programme, le système commence par rechercher le répertoire de travail en cours, puis le chemin, en examinant chaque répertoire de gauche à droite.
Q: COMMENT ajouter un emplacement à la variable PATH?
A: Vous devez éditer la chaîne de variable de la variable PATH des variables d'environnement pour inclure l'emplacement de votre exécutable.
Une façon de faire est décrite ici :
C:\wamp\bin\php\php5.5.12;
J'espère que cela clarifie une partie de la confusion.