PowerShell에서 경로 다시 로드
PowerShell ISE 인스턴스가 실행 중인데 PATH를 수정하는 것을 설치하거나 PowerShell 외부에서 수정하는 경우 PowerShell을 다시 시작해야 업데이트된 PATH 변수를 볼 수 있습니다.
다시 시작하지 않고 PowerShell 내에서 경로를 다시 로드할 수 있는 방법이 있습니까?
롭의 의견을 밝히기 위해서입니다.
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")
컴퓨터 경로를 가져와서 세션 경로에 할당해 보십시오.
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
가장 쉬운 방법은 초콜릿을 사용하는 것입니다.CMD 및 PowerShell 모두에서 작동합니다.그런 다음 간단한 명령으로 PATH를 다시 로드할 수 있습니다(변수 확장 포함).
refreshenv
cmd에서 설치(관리자 권한 필요):
@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
사용 예:
> SET JAVA_HOME=c:/java/jdk6
> SET PATH=%JAVA_HOME%/bin
> ECHO %PATH%
c:/java/jdk6/bin
> SET JAVA_HOME=c:/java/jdk8
> refreshenv
Refreshing environment variables from registry for cmd.exe. Please wait...Finished..
> echo %PATH%
c:/java/jdk8/bin
mpen의 답변에 따르면 PowerShell 기능은 다음과 같습니다.
function refresh-path {
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") +
";" +
[System.Environment]::GetEnvironmentVariable("Path","User")
}
그럼 그냥 전화해요.refresh-path
.
다른 답변에 추가하기 위해 사용자의 경로가 비어 있는 경우 필터링을 통해 불필요한 조인을 추가하지 않도록 할 수 있습니다.
$env:Path=(
[System.Environment]::GetEnvironmentVariable("Path","Machine"),
[System.Environment]::GetEnvironmentVariable("Path","User")
) -match '.' -join ';'
또는 다른 환경 변수 또는 여러 환경 변수에 추가하는 스크립트를 실행하는 경우 함수를 사용하여 모두 재설정합니다.
function resetEnv {
Set-Item `
-Path (('Env:', $args[0]) -join '') `
-Value ((
[System.Environment]::GetEnvironmentVariable($args[0], "Machine"),
[System.Environment]::GetEnvironmentVariable($args[0], "User")
) -match '.' -join ';')
}
resetEnv Path
resetEnv AppPath
경로에 세션 시작 시 정의되지 않은 환경 변수가 포함되어 있는 경우 다음과 같이 확장할 수 있습니다.
$env:Path = [System.Environment]::ExpandEnvironmentVariables([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
이는 %NVM_HOME%를 정의하고 경로에 추가하는 NVM을 설치한 후 유용했습니다.
이를 논리적으로 결론짓기 위해 다음과 같은 재귀 함수를 사용하여 확장할 수 있습니다.
function Expand-EnvironmentVariablesRecursively($unexpanded) {
$previous = ''
$expanded = $unexpanded
while($previous -ne $expanded) {
$previous = $expanded
$expanded = [System.Environment]::ExpandEnvironmentVariables($previous)
}
return $expanded
}
다음을 사용합니다.
$env:Path = Expand-EnvironmentVariablesRecursively([System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User"))
이 솔루션을 추가할 문제를 열었습니다.refreshenv
Chocolaty 출신.
언급URL : https://stackoverflow.com/questions/17794507/reload-the-path-in-powershell
'it-source' 카테고리의 다른 글
선택한 ComboBox 항목에 사용할 이벤트 처리기(선택한 항목을 반드시 변경할 필요는 없음) (0) | 2023.05.21 |
---|---|
process.cwd()와 __dirname의 차이점은 무엇입니까? (0) | 2023.05.21 |
MVC 레이저 마크업에서 쿼리 문자열 매개 변수를 가져오는 방법은 무엇입니까? (0) | 2023.05.21 |
오류: 모듈을 입력합니다.__init__()는 최대 2개의 인수를 사용합니다(3개가 주어짐). (0) | 2023.05.21 |
다중 IP 주소로 mongod.conf bind_ip을 설정하는 방법 (0) | 2023.05.21 |