Comment ajouter des variables d'environnement définies par l'utilisateur à la variable système PATH dans Windows 7?

9

J'ai deux variables définies par l'utilisateur:

ANT_HOME défini sur% USERPROFILE% \ Developer \ Tools \ Apache \ Apache Ant \ apache-ant-1.8.2 JAVA_HOME défini sur C: \ Program Files \ Java \ jdk1.6.0_23

Et je veux ajouter ces chemins à la variable système afin que je puisse accéder aux exécutables dans leurs dossiers bin. j'ai essayé

PATH défini sur [autres chemins];% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Mais ça ne marche pas. Lorsque j'ouvre une invite de commande et que je répète% PATH%, les variables utilisateur ne sont pas développées . Ainsi, le chemin affiche simplement le littéral,;% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Il me semble que cela fonctionne bien sur mes anciens systèmes Windows XP. Comment configurer cela sur Windows 7?

Michael Prescott
la source
Je viens de trouver un article du support Microsoft datant de 2007 en décrivant un bogue dans Shell32.dll. J'ai ajouté une variable PATH à ma liste de variables utilisateur avec PATH défini sur% PATH%;% ANT_HOME% \ bin;% JAVA_HOME% \ bin et j'ai résolu le problème. Je n'aime pas le configurer uniquement pour mon utilisateur, mais mon système présente en quelque sorte le symptôme de ce vieux bogue et je ne vois pas d'autre meilleure réponse pour le moment. L'article est à: support.microsoft.com/kb/329308
Michael Prescott

Réponses:

5

MISE À JOUR NO.2 - Passons maintenant à la question réelle : pourquoi les variables imbriquées créées par l'utilisateur ne se développent-elles pas?

Il y a quelques problèmes généraux concernant l'expansion variable dans Windows. J'ai déjà rencontré le même problème et je n'ai trouvé aucune circonstance claire et reproductible - le niveau de récursivité auquel l'extension échoue n'est pas cohérent, les caractères spéciaux ne semblent pas jouer de rôle, etc.

La seule solution viable que j'ai trouvée consiste à ajouter des variables niveau de récursivité par niveau de récursivité. Cela signifie: essayez de supprimer toutes les variables que vous souhaitez imbriquer les unes dans les autres (y compris les appels de PATH vers vos variables définies par l'utilisateur), puis redémarrez à partir de zéro. Définissez vos variables de base (etc. ANT-HOME), validez, vérifiez si elle est développée, si c'est le cas, passez au niveau suivant de validation, vérifiez ... vous avez l'idée.

RÉPONSE MISE À JOUR - Définition de variables d'environnement permanentes à l'aide de la CLI et de l'interface graphique - Faites défiler vers le bas pour la réponse d'origine

Méthode GUI:

Sur Windows 7, tapez simplement "système" dans l'invite META et vous verrez une entrée "Modifier les variables d'environnement système". De là, cliquez sur "Variables d'environnement". Là, vous pouvez soit modifier la variable système PATH (liste du bas), soit ajouter / modifier une nouvelle variable PATH aux variables d'environnement utilisateur.

Méthode en ligne de commande:

Pour modifier définitivement les variables d'environnement, vous devez utiliser la commande SETX dans la ligne de commande Windows. Contrairement à d'autres versions de Windows, il est intégré à Windows 7. Sa syntaxe diffère beaucoup de SET, mais elle est également puissante. Vous devrez cependant être un peu prudent, il est facile de gâcher vos variables avec SETX.

  • Par défaut, vous modifiez les variables utilisateur . Vous pouvez avoir une variable d'environnement utilisateur PATH qui coexiste avec bonheur avec la variable PATH système. Si vous ne l'avez pas encore défini, faites-le en tapant:SETX PATH yourpath

  • Vous pouvez également ajouter une valeur à la variable système PATH. Pour ce faire, vous devez d'abord afficher une ligne de commande avec des privilèges d'administrateur. Pour ce faire, appuyez sur la touche Meta (Windows), tapez cmdet appuyez sur CTRL+ SHIFT+ ENTERet confirmez la boîte de dialogue UAC.

Pour ajouter de nouvelles valeurs au chemin, vous pouvez maintenant saisir

setx path "%path%;yournewpath" /m

Il est important de suivre cette syntaxe! Si vous n'incluez pas% path% en premier, toutes les valeurs existantes de path seront perdues et remplacées par votre nouveau chemin uniquement. Le commutateur / m à la fin définit la variable dans l'environnement système.

Veuillez noter que vous devrez faire apparaître une nouvelle ligne de commande pour utiliser votre nouvelle variable.

Il existe également une référence complète pour SETX sur TechNet .

ANCIENNE REPONSE La commande SET met à jour les variables uniquement pour la durée de la session de ligne de commande en cours.

La syntaxe correcte pour ajouter une valeur à une variable est 'set [variable] =% [variable]%; [new value] `

Notez qu'à gauche du signe égal, vous devez omettre les signes de pourcentage!

Source: référence de ligne de commande TechNet pour Windows Server

Tobias Plutat
la source
1
Merci pour une réponse très détaillée. Personnellement, j'ai toujours préféré la méthode GUI car je pense qu'il est plus facile de communiquer avec mon équipe. J'ai mis en évidence le problème que j'ai dans mon message d'origine pour plus de clarté. Les variables utilisateur ne se développent pas dans Windows 7 comme elles l'ont fait dans Windows XP. Est-ce que cela ne fonctionne plus ou devrais-je enquêter sur la sécurité ou d'autres paramètres d'administrateur système qui peuvent bloquer le comportement habituel?
Michael Prescott
C'est une très belle façon de dire "Vous êtes complètement à côté de la question";)
Tobias Plutat
... et maintenant mes 2 cents sur la vraie question. Voir la dernière modification de la réponse.
Tobias Plutat
1

Un article du support Microsoft datant de 2007 - numéro 329308 - décrit un bogue dans Shell32.dll, qui est la cause de ce problème. La solution consiste à ajouter une PATHvariable à la liste des variables utilisateur définie sur

%ANT_HOME%\bin;%JAVA_HOME%\bin

Cela a permis de contourner le problème. Je n'aime pas le configurer uniquement pour mon utilisateur, mais mon système présente en quelque sorte les symptômes de ce vieux bogue et je ne vois pas d'autre meilleure réponse pour le moment.

Michael Prescott
la source