2009-02-04 14 views

risposta

16

Se avete bisogno di cambiare le variabili di ambiente a livello globale e permanente, come se si imposta nel pannello di controllo, allora dovete muck with the registry (update: e ora ci sono moduli per fare questo, Win32::Env e Win32::Env::Path). Si noti che la modifica delle variabili nel registro e la "trasmissione" della modifica non modificheranno le variabili di ambiente in alcuni processi correnti, in particolare perl.exe e cmd.exe.

Se si desidera modificare il processo corrente (e successivamente i processi figli generati), la variabile di hash% ENV globale è ciò che si desidera (ad esempio $ ENV {PATH}). Vedi perldoc perlvar.

+0

Vedere http://search.cpan.org/~adamk/Win32-Env-Path-0.01/lib/Win32/Env/Path.pm per un modulo che sembra fare più o meno ciò che è stato descritto in quel nodo perlmonks. – oeuftete

+0

Grazie, non sapevo di quei moduli ... e non esistevano al momento del nodo perlmonks. – runrig

+0

Questo potrebbe essere ispirato molto bene al tuo post ... chi lo sa. :) Non sembra che includa il tuo passaggio dal nodo PM per trasmettere l'aggiornamento. – oeuftete

7

$ ENV {PERCORSO}?

Tenere presente che le variabili di ambiente interessano solo i sottoprocessi, tuttavia. Non è possibile eseguire un programma Perl, modificare% ENV e quindi vedere tale modifica nel processo padre: l'ambiente non funziona in questo modo.

+0

LOL, siamo riusciti a inviare la stessa risposta nello stesso secondo! :-p –

+0

Le grandi menti pensano allo stesso modo;) – jrockway

+0

Ack, era proprio quello che volevo fare. Grazie comunque per la risposta – Xetius

4

È possibile farlo usando il %ENV hash

$ENV{PATH} = 'C:\\Windows\;D:\\Programs'; 
Problemi correlati