Que sont PATH et d’autres variables d’environnement, et comment puis-je les définir ou les utiliser?

341

Des questions sur

  • réglage des variables d'environnement
  • le 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: que 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 inclurait une explication simple des variables d’environnement et en particulier une PATHsignification 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.

slhck
la source
2
Fatiguée de devoir le faire manuellement chaque fois que nécessaire, j'ai écrit des entrées de registre pour ajouter des entrées de menu contextuel pour AddToPath et RemoveFromPath aux dossiers, en utilisant une application gratuite appelée pathed.exe. Vous trouverez ci- dessous le lien vers le guide complet: addictivetips.com/windows-tips/… Je peux maintenant très facilement ajouter des dossiers à la variable PATH ou les en supprimer, sans avoir à éditer un fichier ou à craindre de modifier le formatage de la variable. . J'espère que ça aide. =)
Haroon Q. Raja
1
Sous Windows, il existe un raccourci pour ouvrir les propriétés de System ie. Panneau de configuration -> Système C'est la touche WIN du clavier + Pause / Pause (WIN + Break). Ceci est extrêmement utile et accélère le processus de définition de nouvelles variables environnementales sur Win8, car il faut cliquer à travers plusieurs fenêtres de l'interface utilisateur moderne (ouais. Si c'est moderne, je vais faire pousser un cactus sur ma paume), ce qui est simplement ennuyeux. Bien sûr, vous pouvez créer un script powershell ou utiliser la commande setx sans plus vous en faire: D
termil0r
Dans Windows 8, la recherche est la navigation la plus rapide pour modifier les variables d’environnement système et utilisateur. <kbd> Win </ kbd> + <kbd> W </ kbd> fait apparaître la recherche de tous les paramètres. Rechercher envet les options nécessaires sont répertoriés.
FRIdSUN
Je pense que c'est plus rapide et plus clair en ouvrant CMDet en tapant set, ou en PowerShelltapant Get-Childitem env:.
Paradroid
Si vous modifiez beaucoup la variable de chemin d'accès (comme lors de la configuration d'un nouveau système), il peut être utile de créer un raccourci vers la boîte de dialogue Propriétés système sur le bureau. Pour ce faire, cliquez avec le bouton droit sur le bureau, sélectionnez Nouveau raccourci et entrez systempropertiesadvanced.exe. Ensuite, vous pouvez cliquer sur le lien pour accéder à la boîte de dialogue Propriétés système, puis sur Variables d'environnement pour accéder à la boîte de dialogue contenant les paramètres de chemin.
Brian Burns

Réponses:

334

Que sont les variables d'environnement?

Les variables d'environnement contiennent des valeurs liées à l'environnement actuel, comme le système d'exploitation ou les sessions utilisateur.

Chemin

L'un des plus connus est appelé PATHsous 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 entrer le chemin d'accès complet au fichier sur la ligne de commande. . (Ou sous Windows, la boîte de dialogue Exécuter du menu Démarrer ou Win+ R).

Sous Linux et Mac OS X, il contient généralement tous les répertoires binet sbinrépertoires pertinents pour l'utilisateur actuel. Sous Windows, il contient au moins les répertoires C:\Windowset C:\Windows\system32. C'est pourquoi vous pouvez exécuter la commande calc.exeou à notepad.exepartir de la ligne de commande ou de la boîte de dialogue Exécuter , mais pas firefox.exe. (Firefox est situé dans C:\Program Files\Mozilla Firefox. Pour savoir comment inclure Firefox, cliquez ici .)

Par exemple, si vous tapez calc(le .exe peut être omis) dans la ligne de commande sous Windows, la calculatrice Windows démarre.

* Vous pouvez ajouter un support pour les extensions de fichier autrement qu'en le .exemodifiant %PATHEXT%.

Autre

D'autres variables peuvent indiquer aux programmes le type de terminal utilisé ( TERMsous Linux / Mac OS X) ou, sous Windows, l'emplacement du dossier Windows (par exemple, %WINDIR%est C:\Windows).

Création de nouvelles variables d'environnement

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.

 

les fenêtres

Interface graphique

  1. Ouvert Control Panel » System » Advanced » Environment Variables.

  2. Tapez control sysdm.cpl,,3dans la boîte de dialogue Exécuter ( Win+ 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.

  3. Cliquez avec le bouton droit sur (Mon) ordinateur et cliquez sur Propriétés, ou appuyez simplement sur Win+ Break.

    • Sous XP, cliquez sur Advanced » Environment Variables.
    • Dans Vista + cliquez sur Advanced system settings » Environment Variables.
  4. 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 aide à définir et à modifier les variables d'environnement dans Windows sans avoir à approfondir les paramètres système. Path Editor est un autre programme open source pour Windows permettant de modifier très facilement l’environnement de chemin .

Ligne de commande

Format

Les variables d'environnement dans Windows sont indiquées par des signes de pourcentage (%) entourant le nom:

%name%

écho

Pour afficher la valeur d'une variable d'environnement dans cmd.exe, tapez echo %name%.

C:\>echo %USERPROFILE%
C:\Users\Daniel

ensemble

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 pour (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.

setx

Pour créer / définir une variable de façon 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, 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 setxaux versions de Windows antérieures à Vista.
Outils de support de Windows XP Service Pack 2

Liste des variables d'environnement Windows

Voici une liste des variables d’environnement par défaut , intégrées à Windows. Quelques exemples sont: %WINDIR%, %SystemRoot%, %USERPROFILE%et %APPDATA%. Comme la plupart des noms dans Windows, ils ne respectent pas la casse.

 

Dérivés Unix (FreeBSD, GNU / Linux, OS X)

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 /etcdossier, 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 .profilefichier dans le dossier de départ est un endroit commun pour définir les variables utilisateur.

Réglage 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. Pour afficher les variables d’environnement actuellement définies dans un terminal, exécutez env.

La exportcommande 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 shell pré-POSIX Bourne serait nécessaire.

var=value; export var
export var=value

Le shell C et ses descendants utilisent une syntaxe complètement différente. là, la commande est setenv.

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/pathscontient tous les répertoires par défaut ajoutés au chemin, tels que /binet /usr/sbin.
  • N'importe quel fichier /etc/paths.d- généralement 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.

 

Liens externes:

Variables d'environnement dans XP
Outils de support de Windows XP Service Pack 2 (inclus setx)
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: Chemin d'accès

Daniel Beck
la source
10
À partir de Windows Vista, vous pouvez utiliser SETXpour apporter des modifications permanentes. Sa syntaxe est légèrement différente. SETXdoit être ajouté à partir des Windows Server 2003 Resource Kitversions précédentes de NT.
Parroïde
1
@paradroid Nice, je ne le savais pas (pas un utilisateur Windows). Ce sujet est un wiki de communauté, vous pouvez continuer et simplement modifier ces informations.
Daniel Beck
2
@JdeBP Le titre de la section était destiné à indiquer comment définir ces valeurs sur l'interface utilisateur , appelée shell sous Windows, par opposition à la section suivante, interface de ligne de commande . J'ai édité cela avant même d'avoir vu votre commentaire il y a 10 heures. Personne n'a jamais mentionné que cela ne s'appliquait qu'à Explorer.
Daniel Beck
1
@JdeBP La réponse à laquelle vous êtes lié ne s'applique pas vraiment dans ce cas, puisque vous avez parlé de la définition des valeurs dans le registre. La configuration via le dialogue diffusera ce que WM_SETTINGCHANGEje suppose et informera donc les parties intéressées des nouvelles valeurs. C'est pourquoi j'ai demandé comment cela s'appliquait ici. Faire quelque chose en gras ne change pas son sens et ne le rend pas plus facile à comprendre, tout comme répéter la même phrase, mais plus fort. De plus, j'ai édité ce message il y a quelques heures pour mentionner spécifiquement que les valeurs que les processus reçoivent sont définies lors de leur lancement.
Daniel Beck
3
@JdeBP Vous remarquerez peut-être aussi que la question est plutôt fondamentale. Expliquer soigneusement les subtilités de la distribution des modifications apportées aux variables d'environnement (sérieusement WM_SETTINGCHANGE? API Windows? Ce n'est pas l'auditoire de cette question!) Pourrait ne pas être une bonne idée, car cela risquerait de dérouter le lecteur au lieu d'expliquer en quoi consistent ces variables. .
Daniel Beck
64

Ce billet est d’un point de vue plus technique que celui de Daniel, mais n’explique pas autant les concepts.


L' article de Wikipedia est également une excellente référence.

Linux et la plupart des BSD

Dans la plupart des shells de ligne de commande, les variables d'environnement temporaires sont définies à l'aide de commandes export(sh, bash, zsh) ou setenv(csh, tcsh).

  • Exemples pour ajouter $HOME/binà $PATHbash ou zsh:

    export PATH="$HOME/bin:$PATH"
    

    (Dans ce cas particulier, exportest inutile car PATHfait déjà partie de l'environnement.)

  • csh, tcsh:

    setenv PATH "$HOME/bin:$PATH"
    

Les variables d'environnement persistantes peuvent être définies au cours de plusieurs étapes distinctes:

  • S'identifier:

    • Configuration de la session de connexion: Linux pam_env, qui lit généralement à partir de/etc/environment

    • Connexions au terminal: fichiers "profil" du shell.

      • bashutilise /etc/profileet la première de: ~/.bash_profile, ~/.bash_login, ~/.profile. bash(1)Section de page de manuel Invocation .

        Souvent, le fichier de profil de l'utilisateur inclut également un appel explicite ~/.bashrc.

      • zsh: zsh(1)Section de page de manuel 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 ~/.profiledans mon système.

  • Ouverture d'une fenêtre de terminal:

    • bashutilise /etc/bash.bashrcet ~/.bashrc.

Série Windows NT

  • Dans Invite de commande ( cmd.exe), utilisez set name=valuepour modifier les variables d’environnement pour cette fenêtre.

    Pour ajouter c:\binà %PATH%, utilisez:

    set path=%path%;c:\bin
    

    Cela ne concerne que ce cmd.exeprocessus et tous les nouveaux processus lancés à partir de celui-ci.

  • Pour apporter des modifications persistantes, utilisez Panneau de configuration → Système → Avancé → Variables d’environnement . ( docs )

    Remarque: Bien que les paramètres utilisateur remplacent normalement ceux du système, la PATHvariable 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 le registre (voir ci-dessous) et s'appliquent instantanément à tous les nouveaux processus 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\Environmentet chargées au démarrage du système.

    L'environnement utilisateur est conservé HKCU\Environmentet chargé lors de la connexion de l'utilisateur.

  • Par défaut, le système recherche également des setcommandes dans un AUTOEXEC.NTfichier.

MS-DOS, Windows 16 bits, série Windows 9x

  • Dans Prompt ( command.com) MS-DOS , utilisez set name=value, comme dans WinNT.

    De même, l'exécution setinteractive affecte uniquement cette command.cominstance, ainsi que les nouveaux processus lancés à partir de celle-ci.

  • Pour apporter des modifications persistantes, ajoutez ou modifiez des setlignes appropriées C:\AUTOEXEC.BAT, puis redémarrez.

    • Solution de contournement pour éviter le redémarrage, sous Windows 9x: ouvrez une fenêtre d'invite MS-DOS, définissez les variables appropriées, fermez le processus Explorer existant ( Démarrer → Arrêter → tout en maintenant Ctrl + Maj, cliquez sur Annuler ), exécutez-vous à explorer.exepartir de la fenêtre d'invite MS-DOS. .

VMS

(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 SYS$LOGIN:LOGIN.COM.

Grawity
la source
2
La section VMS est incorrecte. DCL a DCL$PATHpour " commandes étrangères automatiques ".
JdeBP
9

Pour les variables d'environnement global (non terminal) du bashshell PATH, je suis la convention utilisée dans mon installation de machine virtuelle Ubuntu - les autres shells varieront:

Avertissement: La coque toute la séquence de démarrage, qui .bashrc, .profileetc. des fichiers sourcés dans quel ordre ?, quand dois - je vous reconnecter pour obtenir la visibilité aux nouvelles variables définies, alias, etc ?, quelle est la différence entre une connexion , shell interactif et non-interactif - j’utilise cron??, et pourquoi, quand je le fais, . ~/.bashrcma PATHvariable stupide est-elle de plus en plus longue? sont les questions clés qui me viennent à l’esprit lorsque je pense à ma PATHvariable.

En fait, je viens de réécrire complètement mon ensemble de fichiers de démarrage bash en prenant des idées tirées des fichiers squelette Ubuntu et cygwin, et voici quelques-uns de mes sites in:

  1. Exportez la PATHet les autres variables d'environnement globales (c'est-à-dire LD_LIBRARY_PATH) dans le .profilefichier;
  2. Utilisez la logique dans ~/.profilesource $HOME/.bashrcsi elle existe;
  3. Exécuter la clôture du ~/.bashrcavec un test pour l'exécution interactive, quitter sinon;
  4. Mettez tous les alias, shopt« s, la configuration rapide, le contrôle de l' histoire, configuration du terminal, définition de fonction, etc. (configuration associée interactive) dans la partie ~/.bashrcqui est protégée seulement fonctionner en mode interactif;
  5. Débarrassez-vous des autres fichiers de démarrage bash, car leur existence détermine si le chemin d'accès au contrôle fonctionne .profileet .bashrcfonctionne comme prévu. Autrement dit, sauf indication contraire expresse de votre part, supprimez ~/.bash_profile& ~/.bash_login;
  6. Lorsque je suis à l'invite bash et que je dois mettre à jour une configuration par défaut, je modifie mon ~/.bashrcfichier, puis le source simplement avec . ~/.bashrcpour obtenir ces modifications dans mon shell actuel.
  7. Lorsque je modifie une variable d'environnement telle que PATH, je dois modifier et créer ma source ~/.profile.
  8. Je mets mes appels dans des configurations spécifiques de fink, de port et de brassage .profile.

C'est mes 2 cents sur ce sujet.

Billy McCloskey
la source
7

Q: QUELLES sont les variables d'environnement?

A: Les variables d'environnement sont similaires aux variables de tout langage de programmation. Dans le cas de systèmes Windows ou Unix, ils stockent diverses valeurs pour permettre 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: QUELLE est la variable PATH en particulier?

R: La variable PATH définit les chemins de répertoire dans lesquels rechercher les commandes, tant 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 de Wikipedia :

Lorsqu'une commande est entrée dans un shell de commande 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?

R: 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 :

  1. Ouvrez le menu Démarrer et cliquez avec le bouton droit sur Ordinateur. Sélectionnez Propriétés.
  2. Sélectionnez Paramètres système avancés.
  3. Dans l'onglet Avancé, sélectionnez Variables d'environnement.
  4. Sélectionnez EDIT ou NEW. (pour PATH vous voudrez probablement éditer).
  5. Ajoutez votre chemin de localisation. par exemple:C:\wamp\bin\php\php5.5.12;

J'espère que cela clarifie une partie de la confusion.

utilisateur945389
la source