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".
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".
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.
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.
C'est maintenant beaucoup plus facile, pas besoin de redémarrer le Shell :
RefreshEnv.bat
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
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 :
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.