Windows에서 C:\xampp\php
시스템 PATH
환경 변수 를 추가하려고합니다 .
환경 변수 대화 상자를 사용하여 이미 추가했습니다.
그러나 콘솔에 입력하면
C:\>path
새 C:\xampp\php
디렉토리를 표시하지 않습니다 .
PATH=D:\Program Files\Autodesk\Maya2008\bin;C:\Ruby192\bin;C:\WINDOWS\system32;C:\WINDOWS;
C:\WINDOWS\System32\Wbem;C:\PROGRA~1\DISKEE~2\DISKEE~1\;c:\Program Files\Microsoft SQL
Server\90\Tools\binn\;C:\Program Files\QuickTime\QTSystem\;D:\Program Files\TortoiseSVN\bin
;D:\Program Files\Bazaar;C:\Program Files\Android\android-sdk\tools;D:\Program Files\
Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common
\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\
Microsoft Visual Studio\VC98\bin
두 가지 질문이 있습니다.
- 왜 이런 일이 일어 났습니까? 내가 잘못한 것이 있습니까?
- 또한
PATH
콘솔을 사용하여 프로그래밍 방식으로 배치 파일로 변수 에 디렉토리를 추가하는 방법은 무엇입니까?
답변
레지스트리 만 수정합니다. 기존 프로세스는이 값을 사용하지 않습니다. 이 변경 이후 에 시작 되고 상위 환경에서 이전 환경을 상속하지 않으면 새 프로세스가이를 수행 합니다.
콘솔 세션 시작 방법을 지정하지 않았습니다. 이를 확인하는 가장 좋은 방법은 명령 셸을 종료하고 다시 실행하는 것입니다. 그런 다음 업데이트 된 PATH를 상속해야합니다.
답변
옵션 1
PATH
GUI로 변경 한 후 콘솔 창을 닫았다가 다시여십시오.
변경 후 시작된 프로그램 만 새 프로그램을 볼 수 있기 때문에 작동합니다 PATH
.
옵션 2
열린 명령 창에서이 명령을 실행하십시오.
set PATH=%PATH%;C:\your\path\here\
이 명령 C:\your\path\here\
은 현재에 추가 됩니다 PATH
.
세분화 :
set
– 현재 cmd 세션에 대해서만 cmd 환경 변수를 변경하는 명령 . 다른 프로그램과 시스템은 영향을받지 않습니다.PATH=
–PATH
일시적으로 변경 될 환경 변수 임을 나타 냅니다.%PATH%;C:\your\path\here\
–%PATH%
부분의 전류 값을 확장PATH
한;C:\your\path\here\
다음에 연접되어있다. 이것은 새로운 것이됩니다PATH
.
답변
경고 : 이 솔루션 은 PATH 및 시스템의 안정성을 떨어 뜨릴 수 있습니다. 부작용으로 사용자와 시스템 PATH를 병합하고 PATH를 1024 자로 자릅니다. 이 명령의 효과는 되돌릴 수 없습니다. PATH를 먼저 백업하십시오. 자세한 내용은 의견을 참조하십시오.
이것을 맹목적으로 복사하여 붙여 넣지 마십시오. 주의해서 사용하십시오.
다음 명령 을 사용하여 경로를 영구적으로 추가 할 수 있습니다 .PATH
setx
setx /M path "%path%;C:\your\path\here\"
시스템 대신 /M
사용자를 설정 하려면 플래그를 제거하십시오 .PATH
PATH
노트:
- 이
setx
명령은 Windows 7 이상에서만 사용할 수 있습니다. -
관리자 권한 명령 프롬프트에서이 명령을 실행해야합니다.
-
현재 세션에 대해서만 변경하려면 set을 사용하십시오 .
답변
set
또는 setx
명령이 필요하지 않으므로 터미널을 열고 다음을 입력하십시오.
PATH
PATH 변수의 현재 값을 보여줍니다. 이제 디렉토리를 추가 하시겠습니까? 간단히 입력하십시오 :
PATH %PATH%;C:\xampp\php
어떤 이유로 든 PATH 변수를 지우려면 (경로가 없거나 경로를 모두 삭제) 다음을 입력하십시오.
PATH ;
최신 정보
Danial Wilson이 아래 주석에서 언급 한 것처럼 현재 세션에서만 경로를 설정합니다. 경로를 영구적으로 setx
설정하지만 현재 세션에서는 경로를 영구적으로 설정하지는 않지만주의를 기울이려면 변경 내용을 보려면 새 명령 줄을 시작해야합니다 . 자세한 내용은 여기 를 참조 하십시오 .
환경 변수가 존재하는지 또는 해당 값을 보려면 ECHO 명령을 사용하십시오.
echo %YOUR_ENV_VARIABLE%
답변
대신 PowerShell을 사용하겠습니다!
PowerShell을 사용하여 PATH에 디렉토리를 추가하려면 다음을 수행하십시오.
$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path")
기계 전체의 모든 사용자에 대해 변수를 설정하려면 마지막 행은 다음과 같아야합니다.
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")
PowerShell 스크립트에서 C:\xampp\php
PATH에 추가하기 전에 (이전에 추가 된 경우) 존재 여부를 확인할 수 있습니다 . if
조건부로 감쌀 수 있습니다 .
따라서 모든 것을 하나로 모으십시오.
$PATH = [Environment]::GetEnvironmentVariable("PATH")
$xampp_path = "C:\xampp\php"
if( $PATH -notlike "*"+$xampp_path+"*" ){
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$xampp_path", "Machine")
}
더 나은 방법은 일반적인 함수를 만들 수 있다는 것입니다. 추가하려는 디렉토리를 제공하십시오.
function AddTo-Path{
param(
[string]$Dir
)
if( !(Test-Path $Dir) ){
Write-warning "Supplied directory was not found!"
return
}
$PATH = [Environment]::GetEnvironmentVariable("PATH")
if( $PATH -notlike "*"+$Dir+"*" ){
[Environment]::SetEnvironmentVariable("PATH", "$PATH;$Dir", "Machine")
}
}
약간의 연마를 통해 더 나은 결과를 얻을 수 있습니다. 예를 들어,를 사용 Test-Path
하여 디렉토리가 실제로 존재하는지 확인하십시오.
답변
더 안전한 SETX
@Nafscript의 초기 SETX
답변 에 대한 모든 의견을 고수하십시오 .
SETX
기본적으로 사용자 경로 가 업데이트됩니다 .SETX ... /M
시스템 경로 를 업데이트합니다 .%PATH%
사용자 경로가 추가 된 시스템 경로를 포함합니다.
경고
- 백업
PATH
–SETX
1024 자보다 더 이상 쓰레기를 자릅니다 - 전화하지 않음
SETX %PATH%;xxx
-시스템 경로를 사용자 경로에 추가 - 전화 하지마
SETX %PATH%;xxx /M
-시스템 경로에 사용자 경로를 추가합니다 - 과도한 배치 파일 사용은 실명을 유발할 수 있습니다 1
ss64의 SETX 페이지는 매우 좋은 사례가있다. 중요한 것은이 레지스트리 키가있는 곳을 가리키는 SETX
대SETX /M
사용자 변수 :
HKCU\Environment
시스템 변수 :
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
사용 지침
사용자에게 추가 PATH
append_user_path.cmd
@ECHO OFF
REM usage: append_user_path "path"
SET Key="HKCU\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > user_path_bak.txt
SETX PATH "%CurrPath%";%1
시스템에 추가 PATH
append_system_path.cmd
. 관리자로 실행해야합니다.
(다른 수정자를 제외하고는 기본적으로 동일 Key
합니다 SETX /M
)
@ECHO OFF
REM usage: append_system_path "path"
SET Key="HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
FOR /F "usebackq tokens=2*" %%A IN (`REG QUERY %Key% /v PATH`) DO Set CurrPath=%%B
ECHO %CurrPath% > system_path_bak.txt
SETX PATH "%CurrPath%";%1 /M
대안
마지막으로 사용자 또는 시스템 환경 변수 설정을 분리하는 ss64 SETX 페이지에서 권장하는 SETENV 라는 개선 된 버전이 있습니다.
1. 엄격히 사실이 아님
답변
파티에 늦었지만-이미 PATH에 추가하려는 디렉토리에 있으면 편리합니다.
set PATH=%PATH%;%CD%
편집 : 의견에 따라-표준 Windows cmd에서는 작동하지만 powershell에서는 작동하지 않습니다.
powershell의 경우 %CD%
해당[System.Environment]::CurrentDirectory