Come posso aggiungere variabili d'ambiente definite dall'utente al PATH delle variabili di sistema in Windows 7?


9

Ho due variabili definite dall'utente:

ANT_HOME impostato su% USERPROFILE% \ Developer \ Tools \ Apache \ Apache Ant \ apache-ant-1.8.2 JAVA_HOME impostato su C: \ Programmi \ Java \ jdk1.6.0_23

E voglio aggiungere quei percorsi alla variabile di sistema in modo da poter accedere agli eseguibili nelle loro cartelle bin. Provai

PATH impostato su [altri percorsi];% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Tuttavia, ciò non funziona. Quando apro un prompt dei comandi ed echo% PATH%, le variabili utente non vengono espanse . Quindi il percorso mostra solo il valore letterale,;% ANT_HOME% \ bin;% JAVA_HOME% \ bin

Mi sembra di ricordare che funzioni perfettamente sui miei vecchi sistemi Windows XP. Come posso configurarlo su Windows 7?


Ho appena trovato un articolo di supporto Microsoft nel lontano 2007 che descrive un bug in Shell32.dll. Ho aggiunto una variabile PATH all'elenco delle variabili utente con PATH impostato su% PATH%;% ANT_HOME% \ bin;% JAVA_HOME% \ bin e ho risolto il problema. Non mi piace impostarlo solo per il mio utente, ma in qualche modo il mio sistema presenta il sintomo di questo vecchio bug e non vedo ancora nessuna risposta migliore. L'articolo è disponibile all'indirizzo: support.microsoft.com/kb/329308
Michael Prescott,

Risposte:


5

AGGIORNAMENTO N. 2 - Ora alla domanda reale : perché le variabili nidificate create dall'utente non riescono ad espandersi?

Ci sono alcuni problemi generali riguardanti l'espansione variabile in Windows. Ho già riscontrato lo stesso problema e non ho trovato circostanze chiare e riproducibili: il livello di ricorsione in cui l'espansione fallisce non è coerente, i personaggi speciali non sembrano avere un ruolo, ecc.

L'unica soluzione possibile che ho trovato è l'aggiunta di variabili livello di ricorsione per livello di ricorsione. Ciò significa: prova a eliminare tutte le variabili che desideri annidare l'una nell'altra (comprese le chiamate da PATH alle variabili definite dall'utente), quindi esegui l'avvio da zero. Definisci le tue variabili di base (ecc. ANT-HOME), esegui il commit, controlla se è espanso, se lo è, continua con il commit di livello successivo, controlla ... ottieni l'idea.

RISPOSTA AGGIORNATA - Definizione di variabili di ambiente permanenti utilizzando l'interfaccia della riga di comando e la GUI - Scorrere verso il basso per la risposta originale

Metodo GUI:

Su Windows 7, digita semplicemente "sistema" nel META-Prompt e vedrai la voce "Modifica le variabili di ambiente di sistema". Da lì, fai clic su "Variabili d'ambiente". Qui puoi modificare la variabile di sistema PATH (elenco in basso) o aggiungere / modificare una nuova variabile PATH nelle variabili di ambiente dell'utente.

Metodo da riga di comando:

Per modificare le variabili di ambiente in modo permanente, è necessario utilizzare il comando SETX nella riga di comando di Windows. A differenza di altre versioni di Windows, è integrato in Windows 7. La sua sintassi differisce molto da SET, ma è anche potente. Dovrai stare un po 'attento, è facile fare confusione con le tue variabili con SETX.

  • Per impostazione predefinita, si modificano le variabili utente . Puoi avere una variabile d'ambiente utente PATH che coesiste felicemente con la variabile PATH di sistema. Se non lo hai ancora definito, fallo digitando:SETX PATH yourpath

  • È inoltre possibile aggiungere un valore alla variabile di sistema PATH. Per fare ciò, devi prima aprire una riga di comando con privilegi di amministratore. Per fare ciò, premi il tasto Meta (Windows), digita cmde premi CTRL+ SHIFT+ ENTERe conferma la finestra di dialogo Controllo dell'account utente.

Per aggiungere nuovi valori al percorso, ora puoi inserire

setx path "%path%;yournewpath" /m

È importante seguire questa sintassi! Se non includi prima% percorso%, tutti i valori esistenti del percorso andranno persi e sostituiti solo con il tuo nuovo percorso. L'opzione / m alla fine imposta la variabile nell'ambiente di sistema.

Tieni presente che dovrai utilizzare una nuova riga di comando per utilizzare la tua nuova variabile.

C'è anche un riferimento completo per SETX su TechNet .

RISPOSTA VECCHIA Il comando SET aggiorna le variabili solo per la durata della sessione corrente della riga di comando.

La sintassi corretta per aggiungere un valore a una variabile è 'set [variabile] =% [variabile]%; [nuovo valore] `

Nota che a sinistra del segno di uguale, devi omettere i segni di percentuale!

Fonte: riferimento della riga di comando TechNet per Windows Server


1
Grazie per una risposta molto dettagliata. Personalmente ho sempre preferito il metodo GUI perché penso che sia più facile comunicare con il mio team. Ho evidenziato il problema che sto avendo nel mio post originale per chiarezza. Le variabili utente non si espandono in Windows 7 come in Windows XP. Non funziona più o dovrei indagare sulla sicurezza o su altre impostazioni dell'amministratore di sistema che potrebbero bloccare il normale comportamento?
Michael Prescott,

Questo è un modo molto carino di dire "Sei completamente al di fuori del punto";)
Tobias Plutat,

... e ora i miei 2 centesimi sulla domanda reale. Vedi la modifica della risposta più recente.
Tobias Plutat,

1

Un articolo del supporto Microsoft risalente al 2007 - numero 329308 - descrive un bug in Shell32.dll, che è la causa di questo problema. La soluzione consiste nell'aggiungere una PATHvariabile all'elenco delle variabili utente impostata su

%ANT_HOME%\bin;%JAVA_HOME%\bin

Questo ha risolto il problema. Non mi piace impostarlo solo per il mio utente, ma in qualche modo il mio sistema presenta sintomi di questo vecchio bug e non vedo ancora nessuna risposta migliore.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.