Cosa sono PATH e altre variabili d'ambiente e come posso impostarle o usarle?


341

Domande riguardo a

  • impostazione delle variabili d'ambiente
  • il PATH

sono molto comuni qui e nella maggior parte dei casi le risposte sono molto simili tra loro. In futuro sarebbe bello avere un buon Q / A per questo.

Quindi la domanda è: quali sono le variabili di ambiente, come l'eseguibile PATH, e come posso modificarle e usarle sui principali sistemi operativi?

Una buona risposta dovrebbe includere una semplice spiegazione di quali variabili di ambiente e in particolare PATHsignificano per il sistema operativo, nonché semplici linee guida su come impostarle e leggerle di conseguenza.


2
Stanco di doverlo fare manualmente ogni volta che ne avevo bisogno, ho scritto alcune voci di registro per aggiungere voci di menu contestuale per AddToPath e RemoveFromPath alle cartelle, usando un'app gratuita chiamata pathed.exe. Di seguito è riportato il collegamento alla guida completa: addictivetips.com/windows-tips/… Ora posso aggiungere facilmente cartelle alla variabile PATH o rimuoverle da essa, senza dover modificare alcun file o preoccuparmi di incasinare la formattazione della variabile . Spero che sia d'aiuto. =)
Haroon Q. Raja

1
Su Windows esiste un collegamento per l'apertura delle proprietà del sistema, ad es. Pannello di controllo -> Sistema È il tasto WIN sulla tastiera + Pausa / Pausa (WIN + Pausa). Questo è estremamente utile e velocizza il processo di impostazione di nuove variabili ambientali su Win8 perché lì devi fare clic attraverso diverse finestre nell'interfaccia utente moderna (Sì. Se è moderno, farò crescere un cactus sul mio palmo) che è solo fastidioso. Ovviamente puoi creare uno script PowerShell o usare il comando setx e non ti preoccupare più: D
termil0r

In Windows 8, la navigazione più rapida alla modifica delle variabili di sistema e dell'ambiente utente sta usando la ricerca. <kbd> Win </kbd> + <kbd> W </kbd> avvia la ricerca di tutte le impostazioni. Cerca enve sono elencate le opzioni necessarie.
FRIdSUN,

Penso che sia più veloce e più chiaro aprendo CMDe digitando seto PowerShelldigitando Get-Childitem env:.
paradroid

Se stai modificando molto la variabile path (come quando si configura un nuovo sistema), potrebbe essere utile avere un collegamento alla finestra di dialogo Proprietà del sistema sul desktop. Per fare ciò, fare clic con il tasto destro sul desktop, selezionare Nuovo collegamento e immettere systempropertiesadvanced.exe. Quindi è possibile fare clic sul collegamento per accedere alla finestra di dialogo Proprietà del sistema, quindi fare clic su Variabili d'ambiente per accedere alla finestra di dialogo con le impostazioni del percorso.
Brian Burns

Risposte:


334

Cosa sono le variabili d'ambiente?

Le variabili di ambiente contengono valori relativi all'ambiente corrente, come il sistema operativo o le sessioni utente.

Sentiero

Uno dei più noti si chiama PATHsu Windows, Linux e Mac OS X. Specifica le directory in cui si trovano i programmi eseguibili * sulla macchina che possono essere avviati senza conoscere e digitare l'intero percorso del file dalla riga di comando . (O in Windows, la finestra di dialogo Esegui nel menu Start o Win+ R).

Su Linux e Mac OS X, di solito contiene tutto bine le sbindirectory rilevanti per l'utente corrente. Su Windows, contiene almeno le directory C:\Windowse C:\Windows\system32: ecco perché è possibile eseguire calc.exe o notepad.exedalla riga di comando o dalla finestra di dialogo Esegui , ma non firefox.exe. (Firefox si trova in C:\Program Files\Mozilla Firefox. Per informazioni su come includere Firefox, vai qui .)

Ad esempio, digitando calc( .exe può essere omesso) nella riga di comando su Windows verrà avviato il calcolatore di Windows.

* È possibile aggiungere supporto per estensioni di file diverse .exedalla modifica %PATHEXT%.

Altro

Altre variabili potrebbero dire i programmi che tipo di terminale viene utilizzato ( TERMsu Linux / Mac OS X), o, su Windows, in cui si trova la cartella Windows (ad esempio, %WINDIR%è C:\Windows).

Creazione di nuove variabili d'ambiente

In Windows, Linux e Unix, è possibile creare nuove variabili d'ambiente, i cui valori vengono quindi resi disponibili a tutti i programmi all'avvio.

È possibile utilizzarlo quando si scrivono script o programmi installati o distribuiti su più macchine e devono fare riferimento a valori specifici di tali macchine. Mentre un effetto simile può essere ottenuto utilizzando le impostazioni di configurazione specifiche del programma, è più facile farlo utilizzando una variabile d'ambiente se più programmi devono accedere allo stesso valore.

 

finestre

GUI

  1. Aprire Control Panel » System » Advanced » Environment Variables.

  2. Digita control sysdm.cpl,,3la finestra di dialogo Esegui ( Win+ R) e fai clic Environment Variables.
    Per modificare le variabili utente è anche possibile digitare

    %windir%\System32\rundll32.exe sysdm.cpl,EditEnvironmentVariables
    

    nella finestra di dialogo Esegui.

  3. Fare clic con il tasto destro del mouse su (My) Computer e fare clic su Proprietà, oppure premere semplicemente Win+ Break.

    • In XP fai clic su Advanced » Environment Variables.
    • In Vista + fai clic su Advanced system settings » Environment Variables.
  4. Esistono molti altri modi per raggiungere lo stesso posto, ad esempio digitando "variabili di ambiente" nella casella di ricerca del menu Start / Schermata e così via.

Le variabili di ambiente in Windows sono separate in valori specifici dell'utente e della macchina / del sistema. È possibile visualizzare e modificare i loro valori lì. I loro valori correnti al momento del lancio sono resi disponibili per tutti i programmi.

C'è anche Rapid Environment Editor , che aiuta a impostare e modificare le variabili di ambiente in Windows senza la necessità di approfondire le impostazioni di sistema. Un altro programma open source per Windows con cui l'ambiente del percorso può essere modificato in modo molto conveniente è Path Editor .

Riga di comando

Formato

Le variabili di ambiente in Windows sono indicate con segni di percentuale (%) che circondano il nome:

%name%

eco

Per visualizzare il valore di una variabile di ambiente in cmd.exe, digitare echo %name%.

C:\>echo %USERPROFILE%
C:\Users\Daniel

impostato

Per creare / impostare una variabile, utilizzare set varname=value:

C:\>set FunnyCatPictures=C:\Users\Daniel\Pictures\Funny Cat Pictures

C:\>set FunnyCatPicturesTwo=%USERPROFILE%\Pictures\Funny Cat Pictures 2

Per aggiungere / aggiungere una variabile, utilizzare set varname=value;%varname%:

C:\>set Penguins=C:\Linux

C:\>set Penguins=C:\Windows;%Penguins%

C:\>echo %Penguins%
C:\Windows;C:\Linux

Le variabili di ambiente impostate in questo modo sono disponibili per (il resto) della durata del processo del prompt dei comandi in cui sono impostate e sono disponibili per i processi avviati dopo l'impostazione delle variabili.

setx

Per creare / impostare una variabile in modo permanente , utilizzare setx varname "value":

C:\>setx FunnyCatPictures "C:\Users\Daniel\Pictures\Funny Cat Pictures"

[Restart CMD]

C:\>echo %FunnyCatPictures%
C:\Users\Daniel\Pictures\Funny Cat Pictures

Diversamente set, non esiste un segno di uguale e il valore deve essere racchiuso tra virgolette se contiene spazi. Nota che le variabili possono espandersi in una stringa con spazi (ad esempio, %PATH%diventa C:\Program Files), quindi è meglio includere virgolette attorno a valori che contengono variabili.

È necessario aggiungere manualmente setxalle versioni di Windows precedenti a Vista.
Strumenti di supporto di Windows XP Service Pack 2

Elenco delle variabili di ambiente di Windows

Ecco un elenco di variabili d'ambiente predefinite , che sono integrate in Windows. Alcuni esempi sono: %WINDIR%, %SystemRoot%, %USERPROFILE%, e %APPDATA%. Come la maggior parte dei nomi in Windows, non fanno distinzione tra maiuscole e minuscole.

 

Derivati ​​Unix (FreeBSD, GNU / Linux, OS X)

Le variabili d'ambiente in Linux sono precedute da un simbolo di dollaro ($) come $ HOME o $ HOSTNAME. Molte variabili ben note e standard sono indicate in maiuscolo per indicare proprio questo. Tieni presente che i nomi delle variabili fanno distinzione tra maiuscole e minuscole, il che significa che $ User e $ USER non sono completamente correlati dal punto di vista della shell.

I derivati ​​Unix definiscono le variabili a livello di sistema negli script shell situati principalmente nella /etccartella, ma i valori specifici dell'utente possono essere dati a tali variabili negli script situati nella cartella home (ad es. /etc/profile, $HOME/.bash_profile). Il .profilefile nella cartella principale è un luogo comune per definire le variabili utente.

Impostazione delle variabili

Questi file sono script di shell regolari e possono contenere più di semplici dichiarazioni di variabili d'ambiente. Per impostare una variabile di ambiente, utilizzare export. Per mostrare le variabili di ambiente attualmente definite in un terminale, eseguire env.

Il exportcomando è un modo standard per definire le variabili. La sintassi è molto intuitiva. Il risultato è identico per queste due linee, ma la prima alternativa è preferibile nel caso in cui sia necessaria la portabilità alla shell Bourne pre-POSIX.

var=value; export var
export var=value

La shell C e i suoi discendenti usano una sintassi completamente diversa; lì, il comando è setenv.

Vedi il progetto di documentazione Linux, Path HOWTO per una discussione più approfondita su questo argomento.

Forse contrariamente alla credenza comune, OS X è più "Unix" di Linux. Oltre ai file già menzionati, $ PATH può essere modificato in questi file:

  • /etc/pathscontiene tutte le directory predefinite che vengono aggiunte al percorso, come /bine /usr/sbin.
  • Qualsiasi file in /etc/paths.d: utilizzato comunemente dagli installatori per rendere disponibili i file eseguibili forniti dalla shell senza toccare i file di configurazione dell'intero sistema o specifici dell'utente. Questi file contengono semplicemente un percorso per riga. ad es., / Programmi / Mozilla / Calendario / bin.

 

Link esterno:

Variabili d'ambiente in XP
Strumenti di supporto di Windows XP Service Pack 2 (include setx)
Variabili d'ambiente in Windows Vista e Windows 7
Aggiunta di file eseguibili alla finestra di dialogo Esegui
Suggerimenti per Mac OSX - Impostazione delle variabili d'ambiente
TLDP: Path Howto


10
Da Windows Vista in poi è possibile utilizzare SETXper apportare modifiche permanenti. Ha una sintassi leggermente diversa. SETXdeve essere aggiunto da Windows Server 2003 Resource Kitper le versioni precedenti di NT.
paradroid

1
@paradroid Nice, non lo sapevo (non un utente Windows). Questo argomento è wiki della community, puoi andare avanti e modificarlo in quelle informazioni.
Daniel Beck

2
@JdeBP Il titolo della sezione intendeva fare riferimento a come impostare questi valori sull'interfaccia utente , che si chiama shell su Windows, in contrasto con la sezione seguente, interfaccia della riga di comando . L'ho modificato prima ancora di vedere il tuo commento 10 ore fa. Nessuno ha mai detto che questo valeva solo per Explorer.
Daniel Beck

1
@JdeBP La risposta a cui ti sei collegato non si applica in questo caso, dal momento che hai parlato dell'impostazione dei valori nel registro. L'impostazione tramite finestra di dialogo trasmetterà ciò WM_SETTINGCHANGEche immagino, e quindi notificherà alle parti interessate i nuovi valori. Ecco perché ho chiesto come si applicava qui. Fare qualcosa in grassetto non cambia il suo significato e neppure rende più facile la comprensione, proprio come ripetere la stessa frase, solo più forte. Inoltre, ho modificato questo post alcune ore fa per menzionare in modo specifico che i valori che i processi ricevono vengono impostati quando vengono avviati.
Daniel Beck

3
@JdeBP Potresti anche notare che la domanda è di natura piuttosto semplice. Spiegare attentamente la complessità di come vengono distribuiti i cambiamenti alle variabili di ambiente (seriamente WM_SETTINGCHANGE,? API di Windows? Questa non è la audience di questa domanda!) Potrebbe non essere una buona idea, in quanto potrebbe confondere il lettore invece di spiegare di cosa si tratta .
Daniel Beck

64

Questo post è da un punto di vista più tecnico di quello di Daniel, ma non spiega tanto i concetti.


L' articolo di Wikipedia è anche un eccellente riferimento.

Linux e la maggior parte dei BSD

Nella maggior parte delle shell della riga di comando, le variabili di ambiente temporanee vengono impostate utilizzando i comandi export(sh, bash, zsh) o setenv(csh, tcsh).

  • Esempi per anteporre $HOME/bina $PATHin bash o zsh:

    export PATH="$HOME/bin:$PATH"
    

    (In questo caso particolare, exportnon è necessario poiché PATHfa già parte dell'ambiente.)

  • csh, tcsh:

    setenv PATH "$HOME/bin:$PATH"
    

Le variabili di ambiente persistenti possono essere impostate durante diverse fasi separate:

  • Accesso:

    • Configurazione della sessione di accesso: Linux pam_env, che di solito legge/etc/environment

    • Accesso al terminale: i file "profilo" della shell.

      • bashutilizza /etc/profilee il primo di: ~/.bash_profile, ~/.bash_login, ~/.profile. bash(1)Sezione della pagina del manuale Invocazione .

        Spesso, il file del profilo dell'utente include anche una chiamata esplicita ~/.bashrc.

      • zsh: zsh(1)Sezione della pagina del manuale File di avvio / arresto .

      • csh e altri gusci: consultare le pagine di manuale appropriate.

    • Login grafici: non sicuro; può variare a seconda del gestore degli accessi. GDM sembra leggere ~/.profilenel mio sistema.

  • Apertura di una finestra terminale:

    • bashusa /etc/bash.bashrce ~/.bashrc.

Serie di Windows NT

  • Nel Prompt dei comandi ( cmd.exe), utilizzare set name=valueper modificare le variabili di ambiente per quella finestra.

    Per aggiungere c:\bina %PATH%, uso:

    set path=%path%;c:\bin
    

    Ciò riguarda solo quel cmd.exeprocesso e tutti i nuovi processi avviati da esso.

  • Per apportare modifiche permanenti, utilizzare Pannello di controllo → Sistema → Avanzate → Variabili d'ambiente . ( documenti )

    Nota: mentre le impostazioni utente normalmente sovrascrivono quelle di sistema, la PATHvariabile viene gestita in modo speciale: entrambe le impostazioni di sistema e utente vengono unite nel valore finale.

    Le modifiche vengono archiviate nel Registro di sistema (vedere di seguito) e si applicano immediatamente a tutti i nuovi processi creati da Explorer (la shell grafica), ad esempio tramite il menu Start.

  • Le variabili di ambiente a livello di sistema vengono mantenute nel registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environmente caricate all'avvio del sistema.

    L'ambiente utente viene mantenuto HKCU\Environmente caricato durante l'accesso dell'utente.

  • Per impostazione predefinita, il sistema cerca anche i setcomandi nel AUTOEXEC.NTfile.

MS-DOS, Windows a 16 bit, serie Windows 9x

  • Nel prompt di MS-DOS ( command.com), utilizzare set name=value, come in WinNT.

    Allo stesso modo, l'esecuzione setinterattiva influisce solo su command.comun'istanza, insieme a tutti i nuovi processi avviati da essa.

  • Per apportare modifiche permanenti, aggiungere o modificare le setrighe appropriate C:\AUTOEXEC.BAT, quindi riavviare.

    • Soluzione alternativa per evitare il riavvio, per Windows 9x: aprire una finestra del prompt di MS-DOS, impostare le variabili appropriate, chiudere il processo Explorer esistente ( Start → Spegni → tenendo premuto Ctrl + Shift, fare clic su Annulla ), eseguire explorer.exedalla finestra del prompt di MS-DOS .

VMS

(Non ho potuto resistere.)

DCL non ha il concetto di "percorso", ma è possibile inserire varie definizioni di simboli e comandi SYS$LOGIN:LOGIN.COM.


2
La sezione VMS è errata. DCL ha DCL$PATHper " comandi esterni automatici ".
JdeBP,

9

Per le variabili di ambiente globali (non terminali) della bashshell PATH, seguo la convenzione utilizzata nella mia installazione di VM di Ubuntu - altre shell varieranno:

Avvertenza: l'intera sequenza di avvio della shell, che .bashrc, .profileecc., I file vengono acquistati in quale ordine ?, quando devo ripetere il login per ottenere visibilità su variabili, alias, ecc. Appena definiti, qual è la differenza tra un login , interattivo e non interattivo: lo uso cron? e perché quando faccio una . ~/.bashrcmia stupida PATHvariabile cresce sempre più? sono le domande chiave che mi vengono in mente quando penso alla mia PATHvariabile.

In effetti, ho appena riscritto completamente il mio intero set di file di avvio bash prendendo idee dai file scheletro di Ubuntu e cygwin, e qui ci sono alcuni dei miei siti:

  1. Esporta la PATHe altre variabili d'ambiente globali (es. LD_LIBRARY_PATH) Variabili nella .profile;
  2. Usa la logica in ~/.profileper sorgente $HOME/.bashrcse esiste;
  3. Eseguire l'esecuzione del recinto ~/.bashrccon un test per l'esecuzione interattiva, uscire altrimenti;
  4. Metti tutti gli alias, shopt'' prompt prompt, control history, setup del terminale, definizione delle funzioni, ecc. (Setup interattivo correlato) nella parte ~/.bashrcprotetta che funziona solo in modalità interattiva;
  5. Sbarazzarsi degli altri file di avvio di bash, perché la loro esistenza determina se il percorso di controllo passa .profilee .bashrcfunziona come previsto. Cioè, a meno che non ci siano requisiti specifici per fare diversamente, rimuovere ~/.bash_profile& ~/.bash_login;
  6. Quando sono al prompt di bash, e ho bisogno di aggiornare alcune impostazioni predefinite, modifico il mio ~/.bashrcfile, quindi semplicemente lo fonte con un . ~/.bashrcper ottenere quei cambiamenti nella mia shell corrente.
  7. Quando apporto una modifica a una variabile d'ambiente come PATH, devo modificare e creare il mio ~/.profile;
  8. Ho inserito le mie chiamate per modificare, eseguire il porting e preparare impostazioni specifiche .profile.

Sono i miei 2 centesimi su questo argomento.


7

D: COSA sono le variabili di ambiente?

A: Le variabili d'ambiente sono simili alle variabili in qualsiasi linguaggio di programmazione. Nel caso di sistemi Windows o Unix, essi memorizzano vari valori per consentire a programmi e attività di ottenere le informazioni necessarie sul sistema operativo o "Ambiente". Per esempio:

USERPROFILE: directory degli utenti all'interno dei file del sistema operativo.

MAIL: dove è possibile trovare la posta di un utente all'interno dei file del sistema operativo.

D: CHE COSA è specificamente la variabile PATH?

A: La variabile PATH imposta i percorsi di directory in cui cercare quando vengono eseguiti i comandi, sia per i comandi RUN, sia per le chiamate interne dai programmi. Ciò impedisce a un programma di conoscere la posizione di installazione per chiamare altri processi eseguibili.

Cerca la variabile PATH del sistema ambiente Windows e verifica ogni posizione per il file eseguibile specificato. Pertanto, l'aggiunta di una posizione alla variabile PATH consente di chiamare direttamente un eseguibile.

Secondo questo articolo di Wikipedia :

Quando un comando viene immesso in una shell dei comandi o viene effettuata una chiamata di sistema da un programma per eseguire un programma, il sistema cerca prima la directory di lavoro corrente e quindi cerca il percorso, esaminando ciascuna directory da sinistra a destra


D: COME aggiungere una posizione alla variabile PATH?

A: Devi includere la stringa variabile della variabile PATH delle variabili d'ambiente per includere la posizione del tuo eseguibile.

Un modo per farlo è descritto qui :

  1. Apri il menu Start e fai clic destro su Computer. Seleziona Proprietà
  2. Seleziona Impostazioni di sistema avanzate.
  3. Nella scheda Avanzate, selezionare Variabili d'ambiente.
  4. Seleziona MODIFICA o NUOVO. (per PATH molto probabilmente desideri EDIT).
  5. Aggiungi il percorso della tua posizione. per esempio:C:\wamp\bin\php\php5.5.12;

Spero che questo chiarisca un po 'di confusione.

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.