web-dev-qa-db-fra.com

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

Des questions sur

  • réglage des variables d'environnement
  • la 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.

334
slhck

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 s'appelle 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 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 Win+R).

Sous Linux et Mac OS X, il contient généralement tous les répertoires binet sbinpertinents 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% .

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. Ouvrez Control Panel » System » Advanced » Environment Variables.

  2. Tapez control sysdm.cpl,,3 dans 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 (My) Computer et cliquez sur Propriétés, ou appuyez simplement sur Win+Break.

    • Dans XP cliquez sur Advanced » Environment Variables.
    • Sous 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 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 .

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

setx

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 à setname__, 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.
Windows XP Outils de support du Service Pack 2

Liste des variables d'environnement Windows

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.

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

La commande exportest 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 setenvname__.

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.
  • Tout fichier dans /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.

Liens externes:

Variables d'environnement sous XP
Windows XP Outils de support du Service Pack 2 (Inclut setxname__)
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

328
Daniel Beck

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.

Linux et la plupart des BSD

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.

Série Windows NT

  • 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.

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

  • 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.

    • 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 enfoncée, cliquez sur Annuler ), exécutez Explorer.exe à partir 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 dans SYS$LOGIN:LOGIN.COM.

64
grawity

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:

  1. Exportez les PATH et d’autres variables d’environnement global (c.-à-d. LD_LIBRARY_PATH) dans le .profile;
  2. Utilisez la logique dans ~/.profile pour trouver $HOME/.bashrc si elle existe;
  3. Exécution de clôture du ~/.bashrc avec un test pour l'exécution interactive, quittez sinon;
  4. Placez tous les alias, 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;
  5. Supprimez les autres fichiers de démarrage de bash, car leur existence détermine si le chemin de contrôle à travers .profile et .bashrc fonctionne comme prévu. Autrement dit, sauf indication contraire expresse, 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 fichier ~/.bashrc, puis je le source simplement avec un . ~/.bashrc pour obtenir ces modifications dans mon shell actuel.
  7. Lorsque je modifie une variable d'environnement telle que PATH, je dois modifier et générer mon ~/.profile;
  8. Je mets mes appels aux configurations spécifiques fink, port et brasser dans .profile.

C'est mes 2 cents sur ce sujet.

9
Billy McCloskey

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 :

  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.

7
user945389