Lorsque je mets à jour mon PATH à l'aide de la boîte de dialogue Variables d'environnement intégrée ou de quelque chose comme Path Editor , puis que j'ouvre une invite de commande, les modifications apportées à PATH ne seront pas enregistrées avec la console, en fonction de l'emplacement de l'invite de commande. commencé à partir de.
Par exemple, si je modifie mon chemin PATH puis que je lance cmd.exe à partir du menu Démarrer ou d’un raccourci sur le bureau, mon chemin PATH se présente bien: il a été mis à jour avec succès; Toutefois, si je lance cmd.exe à partir d'un raccourci autre que le menu Démarrer ou le Bureau, le nouveau PATH n'est pas lu, mais l'ancien chemin à la place. C'est très étrange.
J'ai essayé d'exécuter l'invite de commande à partir d'un raccourci sur le bureau et tout fonctionne correctement. Je copie ensuite le même raccourci dans un sous-dossier du bureau et l’objet du problème PATH qui n’est pas mis à jour.
Je réalise que c'est assez difficile à expliquer, alors j'ai créé un screencast pour montrer ce problème en action .
Voici une capture d'écran du raccourci d'invite de commande, comme indiqué dans cette capture d'écran:
C'est sur Windows Vista Home Premium SP2.
la source
explorer
processus principal détectera les modifications de l’environnement dans le Registre (auquel appartient la boîte de dialoguerundll32
) et mettra à jour automatiquement son propre environnement. (Du moins sous XP, c'est le cas.) C’est la raison pour laquelle les modifications sont visibles lors du démarragecmd
à partir d’un raccourci.echo $PATH
ne fonctionnait pas. Je pensais que ce serait frais, mais je ne suis pas sorti avant d'avoir fermé tous les onglets de Git Bash et de ConEmu.Comme Rowland le suggère, lors du démarrage d'un nouveau processus, il lit les variables d'environnement à partir du processus qui le démarre. Par conséquent, lors du lancement d’une invite de commande à partir du menu Démarrer ou du Bureau , il lit les variables d’environnement à partir
explorer.exe
desquelles, comme le suggère grawity, détecte les modifications des paramètres d’environnement dans le registre. Je vois donc mon nouveau chemin PATH dans les Bureau ou Menu Démarrer.La raison pour laquelle je ne vois pas de mises à jour de PATH dans le screencast que j'ai posté est parce que j'avais initialement lancé une fenêtre d'explorateur à l'aide de FARR rendant
FindAndRunRobot.exe
le processus parent. FARR ne détecte pas automatiquement les modifications de l'environnement et, par conséquent, les processus enfants générés à partir de celui-ci ne récupèrent pas le nouveau PATH. J'avais aussi l'option ' Lancer les fenêtres du dossier dans un processus séparé ' définie dans l'Explorateur, ce qui signifie que toutes les fenêtres explorer.exe que j'ai ouvertes à la suite de la première ouverte par FARR étaient également des enfants de FARR .En désactivant l' option ' Lancer les fenêtres des dossiers dans un processus séparé ', les nouveaux
explorer.exe
processus ne sont pas créés sous FARR, ce qui résout mon problème. Cependant, je lance également des fenêtres de console et d'autres choses directement à partir de FARR; ceux-ci récupèrent également les anciens paramètres d'environnement. Si je redémarre FARR, les nouveaux paramètres d'environnement sont propagés.Voici une capture d'écran de Process Explorer montrant les processus générés par FARR. Aucun de ces processus ne reçoit les nouveaux paramètres d'environnement du niveau supérieur à
explorer.exe
moins que je ne redémarre FARR:la source