Ho scoperto che l'impostazione della variabile d'ambiente PATH ha effetto solo sul vecchio prompt dei comandi. PowerShell sembra avere impostazioni d'ambiente diverse. Come posso cambiare le variabili d'ambiente per PowerShell (v1)?
Nota:
Voglio rendere le mie modifiche permanenti, in modo da non doverle impostare ogni volta che eseguo PowerShell. PowerShell ha un file di profilo? Qualcosa come il profilo Bash su Unix?
Se, in qualche momento durante una sessione di PowerShell, avete bisogno di aggiungere temporaneamente alla variabile d'ambiente PATH, potete farlo in questo modo:
-- lingua: sh -->
$env:Path += ";C:\Program Files\GnuWin32\bin"
Cambiare le variabili d'ambiente effettive può essere fatto
usando le informazioni env: namespace / drive
. Per esempio, questo
codice aggiornerà la variabile d'ambiente path:
-- lingua: sh -->
$env:Path = "SomeRandomPath"; (replaces existing path)
$env:Path += ";SomeRandomPath" (appends to existing path)
Ci sono modi per rendere permanenti le impostazioni dell'ambiente, ma
se le stai usando solo da PowerShell, è probabilmente
molto meglio usare il vostro profilo per avviare le
impostazioni. All'avvio, PowerShell eseguirà qualsiasi file .ps1
che trova nella directory WindowsPowerShell
sotto
La mia cartella Documenti. Tipicamente hai un file profile.ps1
già lì. Il percorso sul mio computer è
C:\Users\JaredPar\Documents\WindowsPowerShell\profile.ps1
Potete anche modificare le variabili d'ambiente utente/sistema permanentemente (cioè saranno persistenti attraverso i riavvii della shell) con il seguente:
Modificare una variabile d'ambiente di sistema
[Environment]::SetEnvironmentVariable
("Path", $env:Path, [System.EnvironmentVariableTarget]::Machine)
Modifica una variabile dell'ambiente utente
[Environment]::SetEnvironmentVariable
("INCLUDE", $env:INCLUDE, [System.EnvironmentVariableTarget]::User)
Uso dai commenti - aggiungere alla variabile d'ambiente di sistema
[Environment]::SetEnvironmentVariable(
"Path",
[Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::Machine) + ";C:\bin",
[EnvironmentVariableTarget]::Machine)
La soluzione basata sulle stringhe è anche possibile se non si vuole scrivere i tipi
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\bin", "Machine")