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


Questions sur

  • définition des variables d'environnement
  • la PATH

sont très communs ici, et dans la plupart des cas, les réponses sont très similaires les unes aux autres. Dans le futur, ce serait bien d'avoir une bonne Q / R pour cela.

Donc la question est: Quelles sont les variables d'environnement, comme 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 de quelles variables d’environnement et surtout PATH signifie à l'OS, ainsi que des directives simples sur la façon de les définir et de les lire en conséquence.


316
2018-05-16 18:25


origine


Fatigué de devoir le faire manuellement chaque fois que j'en avais besoin, j'ai écrit des entrées de registre pour ajouter des entrées de menu contextuel pour AddToPath et RemoveFromPath à des dossiers, en utilisant une application gratuite appelée pathed.exe. Voici le lien vers le guide complet: addictivetips.com/windows-tips/... Je peux maintenant ajouter très facilement des dossiers à la variable PATH ou les en retirer, sans avoir à éditer aucun fichier ni à craindre de gâcher le formatage de la variable. J'espère que cela aide. =) - Haroon Q. Raja
Sous Windows, il existe un raccourci pour ouvrir les propriétés du système, c.-à-d. Panneau de configuration -> System WIN key on keyboard + Pause / Break (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 sur plusieurs fenêtres dans l'interface utilisateur moderne (Ouais. Si c'est moderne, je développerai un cactus sur ma paume), ce qui est ennuyeux. Bien sûr, vous pouvez créer un script powershell ou utiliser la commande setx et ne vous inquiétez plus: D - termil0r
Dans Windows 8, la recherche la plus rapide pour modifier les variables de l'environnement système et utilisateur utilise la recherche. <kbd> Win </ kbd> + <kbd> W </ kbd> affiche la recherche de tous les paramètres. Rechercher envet les options nécessaires sont répertoriées. - FRIdSUN
Je pense que c'est plus rapide et plus clair en ouvrant CMD et dactylographie set, ou PowerShell et dactylographie Get-Childitem env:. - paradroid
Si vous modifiez beaucoup la variable de chemin (comme lors de la configuration d’un nouveau système), il peut être utile d’avoir un raccourci vers la boîte de dialogue Propriétés du 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 du système, puis cliquer sur Variables d'environnement pour accéder à la boîte de dialogue contenant les paramètres du chemin. - Brian Burns


Réponses:


Que sont les variables d'environnement?

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

Chemin

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 * sont situés sur la machine et peuvent être lancés sans connaître et saisir le chemin d'accès complet au fichier sur la ligne de commande. (Ou sous Windows, le Courir boîte de dialogue dans le menu Démarrer ou Win+R).

Sous Linux et Mac OS X, il contient généralement tout bin et sbin répertoires pertinents pour l'utilisateur actuel. Sous Windows, il contient au moins le C:\Windows et C:\Windows\system32 répertoires - c'est pourquoi vous pouvez courir  calc.exe ou notepad.exe à partir de la ligne de commande ou Courir dialogue, mais pas firefox.exe. (Firefox est situé dans C:\Program Files\Mozilla Firefox. Pour plus d'informations sur l'intégration de Firefox, rendez-vous sur ici.)

Par exemple, en tapant calc (la .exe  pouvez être omis) dans la ligne de commande sous Windows va démarrer la calculatrice Windows.

* Vous pouvez ajouter un support pour les extensions de fichiers autres que .exe en éditant %PATHEXT%.

Autre

D'autres variables peuvent indiquer aux programmes quel type de terminal est utilisé (TERM sous Linux / Mac OS X) ou, sous Windows, où se trouve le dossier Windows (par exemple, %WINDIR% est C:\Windows).

Créer 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 référencer des valeurs spécifiques à ces ordinateurs. Bien qu'un effet similaire puisse être obtenu en utilisant des paramètres de configuration spécifiques à un programme, il est plus facile de le faire en utilisant une variable d'environnement si plusieurs programmes doivent accéder à la même valeur.

les fenêtres

GUI

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

  2. Type control sysdm.cpl,,3 dans la boîte de dialogue Exécuter (Win+R) et cliquez Environment Variables.
    Pour éditer les variables utilisateur, vous pouvez également 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+Pause.

    • Dans XP, cliquez sur Advanced » Environment Variables.
    • Dans Vista + cliquez sur Advanced system settings » Environment Variables.
  4. Il existe de nombreuses autres manières d'atteindre le même endroit, par exemple en tapant "variables d'environnement" dans le menu Démarrer / Zone de recherche d'écran, etc.

Les variables d'environnement dans Windows sont séparées en valeurs spécifiques à l'utilisateur et à la machine / au système. Vous pouvez afficher et modifier leurs valeurs ici. Leurs valeurs actuelles lors du lancement sont mises à la disposition de tous les programmes.

Il y a aussi Rapid Environment Editor, ce qui permet de définir et de modifier les variables d’environnement sous Windows sans avoir à passer par les paramètres système. Un autre programme open source pour Windows avec lequel l’environnement de chemin peut être édité très facilement est Éditeur de chemin.

Ligne de commande

Format

Les variables d'environnement dans Windows sont signalé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

À créer / définir une variable, utiliser set varname=value:

C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures

C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2

À ajouter / ajouter une variable, utiliser 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 commandes dans lequel elles sont définies, et sont disponibles pour les processus démarrés après la définition des variables.

setx

À créer / définir une variable en permanence, utilisation 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 mise 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.
Outils de support Windows XP Service Pack 2

Liste des variables d'environnement Windows

Ici est une liste des variables d'environnement par défaut, qui sont intégrés à Windows. Certains exemples sont: %WINDIR%, %SystemRoot%, %USERPROFILE%, et %APPDATA%. Comme la plupart des noms de Windows, ceux-ci sont insensibles à la casse.

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

Les variables d'environnement sous Linux sont précédées d'un signe dollar ($) tel que $ HOME ou $ HOSTNAME. Beaucoup de variables connues et standardisées sont indiquées en lettres majuscules pour signifier cela. Gardez à l'esprit que les noms de variables sont sensibles à la casse, ce qui signifie que $ User et $ USER sont totalement indépendants du point de vue du shell.

Les dérivés Unix définissent des variables système dans des scripts shell situés principalement dans /etc dossier, mais des valeurs spécifiques à l'utilisateur peuvent être données à ces variables dans des scripts situés dans le dossier de base (par exemple, /etc/profile, $HOME/.bash_profile). le .profile fichier dans le dossier de base est un lieu commun pour définir les variables utilisateur.

Définition des variables

Ces fichiers sont des scripts shell standard et peuvent contenir plus que des déclarations de variables d'environnement. Pour définir une variable d'environnement, utilisez export. Pour afficher vos variables d’environnement actuellement définies dans un terminal, exécutez env.

le export La commande 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 dans le cas où la portabilité sur un shell Bourne pré-POSIX est 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, Chemin HOWTO pour une discussion plus approfondie sur ce sujet.

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 qui sont ajoutés au chemin, comme /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, / Programs / Mozilla / Calendar / bin.

Liens externes:

Variables d'environnement sous XP
Outils de support Windows XP Service Pack 2 (Comprend setx)
Variables d'environnement dans Windows Vista et Windows 7
Ajout d'exécutables à la boîte de dialogue Exécuter
Astuces Mac OSX - Définition des variables d'environnement
TLDP: Path Howto


309
2018-05-16 18:44



Sur Windows Vista, vous pouvez utiliser SETX apporter des modifications permanentes. Sa syntaxe est légèrement différente. SETX doit être ajouté à partir du Windows Server 2003 Resource Kit pour les versions antérieures de NT. - paradroid
@paradroid Nice, ne le savait pas (pas un utilisateur Windows). Ce sujet est le wiki de la communauté, vous pouvez aller de l'avant et simplement modifier ces informations. - Daniel Beck♦
@JdeBP Le titre de la section était destiné à faire référence à comment définir ces valeurs sur l'interface utilisateur, qui est appelée coquille sur Windows, contrairement à la section suivante, interface de ligne de commande. Je l'ai édité avant même d'avoir vu votre commentaire il y a 10 heures. Personne n'a jamais mentionné que cela ne s'appliquait qu'à l'explorateur. - Daniel Beck♦
@JdeBP La réponse à laquelle vous avez lié ne s'applique pas vraiment dans ce cas, puisque vous avez parlé de définir les valeurs dans le registre. Le réglage via le dialogue diffusera cette WM_SETTINGCHANGE J'imagine, et par conséquent notifier les parties intéressées sur les nouvelles valeurs. C'est pourquoi j'ai demandé comment cela s'appliquait ici. Faire quelque chose en gras ne change pas sa signification et ne facilite pas la compréhension, tout comme la répétition de la même phrase, mais plus fort. En outre, j'ai édité ce post il y a quelques heures pour mentionner spécifiquement que les valeurs reçues par les processus sont définies lors de leur lancement. - Daniel Beck♦
@JdeBP Vous remarquerez peut-être que la question est plutôt fondamentale. Expliquant soigneusement les subtilités de la façon dont les modifications apportées aux variables d'environnement sont distribuées (sérieusement, WM_SETTINGCHANGE? API Windows? Ce n'est pas l'audience de cette question!) Ce n'est peut-être pas une bonne idée, car cela pourrait induire le lecteur en erreur au lieu d'expliquer en quoi consistent ces variables. - Daniel Beck♦


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


le 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 export (sh, bash, zsh) ou setenv (csh, tcsh) commandes.

  • Exemples de préparation $HOME/bin à $PATH en bash ou zsh:

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

    (Dans ce cas particulier, export est inutile depuis PATH fait déjà partie de l'environnement.)

  • csh, tcsh:

    setenv PATH "$HOME/bin:$PATH"
    

Les variables d'environnement persistantes peuvent être définies lors 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 du terminal: fichiers "profil" du shell.

      • bash les usages /etc/profile et le premier de: ~/.bash_profile, ~/.bash_login, ~/.profile. Page de manuel bash(1) section Invocation.

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

      • zsh: Page de manuel zsh(1) section Fichiers de démarrage / arrêt.

      • csh et autres coquilles: Voir les pages de manuel appropriées.

    • Identifiants 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 les usages /etc/bash.bashrc et ~/.bashrc.

Windows NT série

  • Dans l'invite de commande (cmd.exe), utilisation set name=value pour changer les variables d'environnement pour cette fenêtre.

    À ajouter c:\bin à %PATH%, utilisation:

    set path=%path%;c:\bin
    

    Cela n'affecte que cela cmd.exe processus, et tout Nouveau processus lancés à partir de celui-ci.

  • Pour faire des changements persistants, utilisez Panneau de configuration → Système → Avancé → Variables d'environnement. (docs)

    Remarque: Alors que les paramètres utilisateur remplacent normalement ceux du système, PATH La variable 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 Nouveau processus créés par Explorer (le shell graphique), par exemple, via le menu Démarrer.

  • Les variables d'environnement système sont conservées dans le registre, HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmentet chargé 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 set commandes dans AUTOEXEC.NT fichier.

MS-DOS, Windows 16 bits, Windows 9x

  • Dans l'invite MS-DOS (command.com), utilisation set name=value, comme dans WinNT.

    De même, en cours d'exécution set interactivement affecte que celui-là command.com exemple, avec tous les nouveaux processus lancés à partir de celui-ci.

  • Pour apporter des modifications persistantes, ajoutez ou modifiez set lignes dans C:\AUTOEXEC.BAT, puis redémarrez.

    • Solution pour éviter le redémarrage, pour 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), courir explorer.exe à partir de la fenêtre d'invite MS-DOS.

VMS

(Impossible de résister.)

DCL n'a pas de concept de "chemin", mais diverses définitions de symboles et de commandes peuvent être ajoutées SYS$LOGIN:LOGIN.COM.


61
2018-05-16 19:03



La section VMS est incorrecte. DCL a DCL$PATH pour "commandes étrangères automatiques". - JdeBP
@grawity, que voulez-vous dire par "vms ne pouvait pas résister ..."? - Pacerier


Pour le bash coquille PATH variables d'environnement global (non-terminal), je suis la convention utilisée dans mon installation Ubuntu VM - les autres shells varieront:

Avertissement: Toute la séquence de démarrage du shell, qui .bashrc, .profile, etc. les fichiers proviennent-ils de quel ordre? Quand dois-je me reconnecter pour avoir une visibilité sur les variables, alias, etc. nouvellement définis? Quelle est la différence entre un shell de connexion, interactif et non interactif? cron?, et pourquoi quand je fais un . ~/.bashrc est mon idiot PATH variable de plus en plus longue? sont les questions clés qui me viennent à l’esprit quand je pense à mon PATH variable.

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

  1. Exporter le PATH et autres variables d'environnement globales (c'est-à-dire LD_LIBRARY_PATH) variables dans le .profile;
  2. Utiliser la logique dans ~/.profile pour citer $HOME/.bashrc s'il existe
  3. Exécution de la clôture du ~/.bashrc avec un test pour l'exécution interactive, quittez-le;
  4. Mettez tous les alias, shopt's, configuration rapide, contrôle de l'historique, configuration du terminal, définition de la fonction, etc. (configuration associée interactive) ~/.bashrc qui est protégé pour ne fonctionner qu'en mode interactif;
  5. Débarrassez-vous des autres fichiers de démarrage bash, car leur existence détermine si le chemin de contrôle via .profile et .bashrc fonctionne comme prévu. C'est-à-dire, à moins qu'il y ait des exigences spécifiques à faire autrement, supprimer ~/.bash_profile Et ~/.bash_login;
  6. Lorsque je suis à l’invite de bash, et que je dois mettre à jour une configuration par défaut, je modifie mon ~/.bashrc fichier, puis simplement le source avec un . ~/.bashrc pour obtenir ces changements dans mon shell actuel.
  7. Lorsque je modifie une variable d'environnement comme PATH, J'ai besoin de modifier et de source mon ~/.profile;
  8. Je mets mes appels à fink, port et installe des configurations spécifiques dans .profile.

C'est mes 2 centimes sur ce sujet.


8
2018-01-15 17:49





Q:  QUELLES sont les variables d'environnement?

UNE: Les variables d'environnement sont similaires aux variables dans n'importe quel langage de programmation. Dans le cas des 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 des informations sur l’environnement. Pour par exemple:

USERPROFILE: répertoire d'utilisateurs dans les fichiers OS.

MAIL: où un courrier de l'utilisateur peut être trouvé dans les fichiers du système d'exploitation.

Q: QUELLE est la variable PATH spécifiquement?

UNE: La variable PATH définit les chemins de répertoire à rechercher lorsque des commandes sont exécutées, à la fois pour les commandes RUN et pour les appels internes provenant de programmes. Cela empêche un programme de connaître son emplacement d'installation pour appeler d'autres processus exécutables.

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

"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 recherche d'abord le répertoire de travail en cours, puis recherche le chemin en examinant chaque répertoire de gauche à droite" - http://en.wikipedia.org/wiki/PATH_ (variable)


Q: COMMENT ajouter un emplacement à la variable PATH?

UNE: Vous devez modifier la chaîne de variable de la variable d'environnement Variables PATH pour inclure l'emplacement de votre exécutable.

Une façon de le faire à partir de (https://kb.wisc.edu/cae/page.php?id=24500) 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 souhaitez probablement modifier). 5. Ajoutez votre chemin d’emplacement. ex: C: \ wamp \ bin \ php \ php5.5.12;

J'espère que cela clarifie une partie de la confusion. Les modifications et les commentaires sont les bienvenus.


6
2017-07-25 09:57