17 votes

Variable d'environnement "Refresh

Comment rafraîchir une Shell Windows cmd après avoir modifié mes variables d'environnement ?

Par exemple, dans bash, je peux simplement faire "source ~/.bashrc".

6voto

Cela dépend vraiment de la façon dont vos variables d'environnement ont été définies. Si, par exemple, vous avez utilisé la commande "SET" dans la ligne de commande, cela n'affecte que l'instance actuelle. D'un autre côté, des commandes telles que "SETX" ajusteront de façon permanente la valeur de la variable d'environnement. SETX garantit que toutes les instances futures de cmd verront la mise à jour. Elle n'aura aucun effet sur l'environnement local.

Si la variable d'environnement est définie par une autre application et qu'elle n'est pas mise à jour, il est souvent plus simple de soit redémarrer le processus "explorer.exe", se déconnecter et se reconnecter, ou redémarrer. Essentiellement, il suffit de dire à l'explorateur de recharger les variables d'environnement. S'il s'agit d'une application que vous avez développée, comme un programme d'installation, assurez-vous qu'elle fait appel à SendMessage (HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment"); . Ceci indique à l'explorateur de rafraîchir son cache des variables d'environnement.

Ceci est important car les applications lancées par un autre processus héritent de leurs variables d'environnement de leur parent. Ainsi, si vous lancez cmd depuis l'explorateur, vous obtenez les variables telles que l'explorateur les voit.

6voto

Je voudrais compléter la réponse de Lance McCarthy.

El RefreshEnv.bat fait partie de Chocolaté donc si vous utilisez Chocolatey vous avez RefreshEnv.bat installé. Mais vous pouvez également obtenir ce fichier batch directement à partir de la page Chocolaty GitHub ( lien vers les données brutes ). Enregistrez ce fichier dans votre PATH et exécutez simplement refreshenv depuis n'importe quelle console pour mettre à jour l'environnement.

2voto

Wis Points 1

J'ai appris qu'il existe un moyen beaucoup plus facile d'y parvenir : Il existe une commande appelée refreshenv .

Il suffit de l'exécuter et vous verrez ce qui suit :

enter image description here

E:>refreshenv

Rafraîchissement des variables d'environnement du registre pour cmd.exe. Veuillez patienter... Terminé...

1voto

Lance McCarthy Points 111

C'est maintenant beaucoup plus facile, pas besoin de redémarrer le Shell :

  1. Ouvrez le menu de démarrage et recherchez RefreshEnv.bat
  2. Exécuter RefreshEnv.bat

Observez que vos variables d'environnement nouvellement ajoutées sont disponibles dans toute nouvelle instance de Command/Powershell, en vérifiant le rafraîchissement.

[EDIT] Le fichier batch est fourni avec certains outils de développement (i.e. Visual Studio), ce n'est pas un défaut sous Windows. Vous pouvez l'obtenir rapidement en installant chocolatey, ou encore mieux, vous pouvez copier le texte et le sauvegarder localement. https://github.com/chocolatey/choco/blob/master/src/chocolatey.resources/redirects/RefreshEnv.cmd

1voto

claudiusraphael Points 15

CMD ne permet pas de rafraîchir la fenêtre en fonction des modifications apportées dans la session actuelle. Vous devez charger en chaîne une nouvelle fenêtre exécutant un script dans tous les cas, quelle que soit la variante choisie.

Puisque vous n'avez pas exclu PowerShell comme option, mais que c'est une donnée pour tous les systèmes d'exploitation actuellement supportés par MicroSoft, permettez-moi d'ajouter :

Vous pouvez également (si vous le pouvez/êtes autorisé) utiliser PowerShell, qui vous donne un accès direct aux variables d'environnement des sessions. Vous pouvez écraser les variables spécifiques contenues dans $env avec les changements que vous avez appliqués au profil utilisateur/machine.

[System.Environment]::GetEnvironmentVariable("Path","Machine")

... contient les modifications appliquées à la variable PATH-environment pour le profil de la machine.

[System.Environment]::GetEnvironmentVariable("Path","User")

... contient les changements appliqués à la variable PATH-environment pour le profil utilisateur actuel.

Pour que ces changements soient immédiatement effectifs, il faut donc l'assigner à la variable d'environnement PATH de la session actuelle :

$env:Path=[System.Environment]::GetEnvironmentVariable("Path","User")

J'ai trouvé une autre question sur StackOverflow qui a quelques variantes à proposer pour cette approche :

PowerShell : Recharger le chemin dans powershell

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X