Windows에서 PATH 환경 변수에 디렉토리 추가


523

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

두 가지 질문이 있습니다.

  1. 왜 이런 일이 일어 났습니까? 내가 잘못한 것이 있습니까?
  2. 또한 PATH콘솔을 사용하여 프로그래밍 방식으로 배치 파일로 변수 에 디렉토리를 추가하는 방법은 무엇입니까?

43
이것은 '툴 프로그래머가 일반적으로 사용하는 도구'에 대한 질문이기 때문에 주제에 관한 것입니다. Windows에서 개발하고 PATH를 수정할 필요가 없다면 놀랐습니다. 프로그래밍과 관련된 욕구를 충족시키기 위해 가장 높은 투표 응답이 지적한 것을 강조했습니다. 콘솔을 통해 또는 배치 파일을 통해 프로그래밍 방식으로 수행 할 수 있습니다.
George Stocker

1
리뷰 @GeorgeStocker에 감사드립니다. 그렇습니다. 프로그래밍 방식으로 수행했지만 콘솔 세션에서 변경 사항을 적용한 후 다시 로그인해야한다는 생각은 없었습니다. (그리고 나는 단지 내 경우에만 생각) 가장 높은 투표 답변은 일반적으로 질문에 대답합니다
Netorica

1
@George-동의했지만,이 질문은 스택 오버플로가 아니라 슈퍼 유저를위한 것입니다. 수퍼 유저는 개인용 웹 서버 구성에 대한 도움말을 제공합니다. 스택 오버플로는 프로그래밍 질문입니다.
jww

1
새 콘솔을 종료하고 엽니 다 ... bash를 사용하는 경우 사용 방법 / 사용 방법에 따라 변경 사항이 유지되기 전에 시스템을 재부팅해야 할 수 있습니다.
트래커 1

답변:


148

레지스트리 만 수정합니다. 기존 프로세스는이 값을 사용하지 않습니다. 이 변경 이후 에 시작 되고 상위 환경에서 이전 환경을 상속하지 않으면 새 프로세스가이를 수행 합니다.

콘솔 세션 시작 방법을 지정하지 않았습니다. 이를 확인하는 가장 좋은 방법은 명령 셸을 종료하고 다시 실행하는 것입니다. 그런 다음 업데이트 된 PATH를 상속해야합니다.


9
흠, 그것은 실제로 레지스트리 만 수정하는 것입니다. PATH 명령을 사용하는 명령 프롬프트 대신 제어판 대화 상자 에서이 작업을 수행하는 것이 약간 분명합니다. 관심이 있다면 SysInternals의 Process Monitor를 사용하여 수행하는 작업을 쉽게 관찰 할 수 있습니다. PATH 사용 은 동일 하지 않으므로 콘솔을 닫으면 변경 사항이 모두 손실됩니다. SETX는 대화 상자와 같이 지속적으로 변경하는 방법입니다.
Hans Passant

3
맞습니다. 새 환경 변수를 선택하기 전에 항상 콘솔 세션을 다시 시작해야합니다.
BrainSlugs83

1
WM_SETTINGCHANGE메시지가 apllication에서 전송 된 경우 콘솔 세션이 변수를 업데이트 합니까? stackoverflow.com/a/8358361
John_West 2016 년

이론적으로 가능하지만 실제로 알고있는 실제 CRT 구현은 없습니다. 탐색기는 않습니다.
Hans Passant 2016 년


958

옵션 1

PATHGUI로 변경 한 후 콘솔 창을 닫았다가 다시여십시오.

변경 후 시작된 프로그램 만 새 프로그램을 볼 수 있기 때문에 작동합니다 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.

16
@Ilya : 내 컴퓨터-> 속성-> 고급-> 환경 변수-> 경로에서 경로가 변경된 후 콘솔 창을 열었습니다. 일부 Windows 앱은 시작 후 환경 변수 변경 사항을 전파하지만 일부는 변경되지 않습니다. WinXP cmd.exe는 그렇지 않습니다.
JimR

7
콘솔을 종료하고 다시 실행하면 경로를 재설정해야합니다. 이 변경을 영구적으로 만드는 방법에 대한 아이디어가 있습니까?
David 天宇 Wong

2
@David 天宇 Wong "내 컴퓨터"> "속성"> "고급"> "환경 변수"> "경로"를 따르는 경우 해당 문자열의 끝에 디렉토리를 추가하면 그대로 유지됩니다. 변경 후 콘솔을 열어야합니다.
theB3RV

@ @ theB3RV, 그것은 간단한 일을하는 먼 길입니다. 콘솔에 입력 할 수있는
영구

12
@David 天宇 Wong 방금 "SETX는 대화 상자와 같이 지속적으로 변경하는 방법입니다." 그래서 SETX 명령은 그렇게해야합니다
theB3RV

202

경고 : 이 솔루션 PATH 및 시스템의 안정성을 떨어 뜨릴 수 있습니다. 부작용으로 사용자와 시스템 PATH를 병합하고 PATH를 1024 자로 자릅니다. 이 명령의 효과는 되돌릴 수 없습니다. PATH를 먼저 백업하십시오. 자세한 내용은 의견을 참조하십시오.

이것을 맹목적으로 복사하여 붙여 넣지 마십시오. 주의해서 사용하십시오.

다음 명령 을 사용하여 경로를 영구적으로 추가 할 수 있습니다 .PATHsetx

setx /M path "%path%;C:\your\path\here\"

시스템 대신 /M사용자를 설정 하려면 플래그를 제거하십시오 .PATHPATH

노트:

  • setx명령은 Windows 7 이상에서만 사용할 수 있습니다.
  • 관리자 권한 명령 프롬프트에서이 명령을 실행해야합니다.

  • 현재 세션에 대해서만 변경하려면 set을 사용하십시오 .


7
SETX /M path "%path%;C:\Program Files (x86)\Git\bin\"기계 수준에서 PATH 값을 설정하는 방법
Lu55

7
이것이 왜 대답이 맞지 않습니까? 나는 대부분의 사람들이 자신의 길을 영구적으로 설정하고 싶을 것입니다 ...
Peter Gordon


9
경고 : %PATH%변수를 사용하기 때문에이 명령은 전역 환경 변수를 사용자 환경 변수와 병합합니다. 그렇지 않습니까? 이로 인해 특히 / M 스위치와 함께 원치 않는 부작용이 발생할 수 있습니다.
FF_Dev

4
2주의 :%PATH% 가 프롬프트 명령의 실행에서로드 결코 이후에 다시로드되지로서 변수 환경 변수에 동기되지 않을 수있다 (심지어 setx 명령을 실행하는 경우). 또한 이전에 실행 된 스크립트에 의해 로컬로 변경되었을 수 있습니다.
FF_Dev

66

set또는 setx명령이 필요하지 않으므로 터미널을 열고 다음을 입력하십시오.

PATH

PATH 변수의 현재 값을 보여줍니다. 이제 디렉토리를 추가 하시겠습니까? 간단히 입력하십시오 :

PATH %PATH%;C:\xampp\php

어떤 이유로 든 PATH 변수를 지우려면 (경로가 없거나 경로를 모두 삭제) 다음을 입력하십시오.

PATH ;

최신 정보

Danial Wilson이 아래 주석에서 언급 한 것처럼 현재 세션에서만 경로를 설정합니다. 경로를 영구적으로 setx설정하지만 현재 세션에서는 경로를 영구적으로 설정하지는 않지만주의를 기울이려면 변경 내용을 보려면 새 명령 줄을 시작해야합니다 . 자세한 내용은 여기 를 참조 하십시오 .

환경 변수가 존재하는지 또는 해당 값을 보려면 ECHO 명령을 사용하십시오.

echo %YOUR_ENV_VARIABLE%

1
그것은 작동했습니다 :) 어떻습니까! 'PATH % PATH %;' 나는 그것을 기억할 수있다
더스틴 Woodard에게

12
나는 이것이 cmd 세션의 인스턴스에서만 작동한다고 생각합니다. setx를 사용하여 영구적으로 변경하십시오.
Daniel Wilson

2
따옴표를 포함 하지 마십시오 . 예를 들어PATH %PATH%;C:\Program Files\...PATH "%PATH%;C:\Program Files\..."
icc97

4
setx를 사용하지 마십시오! 경로 변수가 잘릴 위험이 있으며 시간 설정에 소비 한 다른 많은 경로가 손실됩니다. 위의 경고에 유의하십시오.
STWilson

1
@STWilson, 댓글이 너무 늦었습니다!
서양

48

대신 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\phpPATH에 추가하기 전에 (이전에 추가 된 경우) 존재 여부를 확인할 수 있습니다 . 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하여 디렉토리가 실제로 존재하는지 확인하십시오.


3
호출하기위한 SetEnvironmentVariableMachine매개 변수 관리자 권한으로 PowerShell을 열어야합니다
InsOp

몹시이 "전원"쉘 % USERPROFILE % 나 $ 사용자 프로필을 인식하지 못하는 실망 ..하지만 다시, 이것은 우리가 이야기하고있는 창입니다
abbood

3
@abbood 찾고있는 것은 $env:userprofile입니다.
nyuszika7h

3
user또는 machine호출 중 하나를 지정해야합니다 GetEnvironmentVariable. 그렇지 않으면, $PATH경로 변수를 다시 저장할 때 불필요하게 불려 오는 레지스트리의 사용자 및 기계 부분 값이 모두 포함됩니다.
René Nyffenegger

35

더 안전한 SETX

@Nafscript의 초기 SETX답변 에 대한 모든 의견을 고수하십시오 .

  • SETX기본적으로 사용자 경로 가 업데이트됩니다 .
  • SETX ... /M시스템 경로 를 업데이트합니다 .
  • %PATH% 사용자 경로가 추가 된 시스템 경로를 포함합니다.

경고

  1. 백업PATH - SETX1024 자보다 더 이상 쓰레기를 자릅니다
  2. 전화하지 않음SETX %PATH%;xxx -시스템 경로를 사용자 경로에 추가
  3. 전화 하지마 SETX %PATH%;xxx /M -시스템 경로에 사용자 경로를 추가합니다
  4. 과도한 배치 파일 사용은 실명을 유발할 수 있습니다 1

ss64의 SETX 페이지는 매우 좋은 사례가있다. 중요한 것은이 레지스트리 키가있는 곳을 가리키는 SETXSETX /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. 엄격히 사실이 아님


24

파티에 늦었지만-이미 PATH에 추가하려는 디렉토리에 있으면 편리합니다.

set PATH=%PATH%;%CD%

편집 : 의견에 따라-표준 Windows cmd에서는 작동하지만 powershell에서는 작동하지 않습니다.

powershell의 경우 %CD%해당[System.Environment]::CurrentDirectory


1
내 Powershell에 % CD %가 인식되지 않습니다.
Paulo Matos

@PauloMatos 사용 가능[System.Environment]::CurrentDirectory
nclord

4

모든 답변 외에도 Windows 환경 변수를 편집하는 멋진 GUI 도구를 원한다면 Rapid Environment Editor를 사용할 수 있습니다

시도 해봐! 사용하기에 안전하고 굉장합니다!

http://www.rapidee.com/en/


2
Windows 10은 이제 Path Environment 변수 편집기를 크게 개선했습니다. 그들에게 다가오는 데 20 년이 걸렸습니다.
icc97

4
  • 명령 행 변경 사항은 영구적이지 않으며 콘솔이 닫히면 유실됩니다.
  • 첫 번째 경로가 먼저 제공됩니다.
  • 이미 포함 된 다른 실행 파일을 무시할 수 있습니다. 예를 들어 이미 경로에 다른 버전이 있고 경로를 영구적으로 변경하지 않고 다른 버전을 추가하려는 경우 명령의 시작 부분에 디렉토리를 배치해야합니다.

이미 포함 된 실행 파일을 무시하려면

PATH = C : \ xampp \ php; % PATH %;를 설정하십시오.


2

Windows 10 LTSB에서 위의 제안을 확인하고 "도움말"개요 (cmd에서 'command /?'를 입력 할 때 볼 수 있음)를 살짝 살펴보면 PATH 명령이 시스템 환경 변수를 변경한다는 결론을 얻었습니다. 현재 세션에 대해서만 경로 값이 있지만 재부팅 후 모든 값은 PATH 명령을 사용하기 전과 마찬가지로 기본값으로 재설정됩니다.

반면에 관리 권한으로 SETX 명령을 사용하는 것이 훨씬 강력하므로, 값을 양호하게 변경합니다 (적어도 다음에이 명령을 사용할 때까지 또는 다음에 해당 값을 수동으로 GUI로 조작 할 때까지).

그러나 명확성을 위해 나는 여기에서 나에게 가장 적합한 SETX 구문 사용법을 공유하면 언젠가 누군가를 도울 수 있다고 생각했습니다.

SETX PATH "%PATH%;C:\path\to\where\the\command\resides"

등호 '='는 피해야하며 공백에 대해 걱정하지 마십시오! 경로 안에 공백이 포함 된 경로에 더 이상 따옴표를 삽입 할 필요가 없습니다-분할 기호 ';' 일을하세요.

SETX 다음에 오는 PATH 키워드는 시스템 환경 변수 가능한 값 중에서 어떤 값을 변경해야하는지 정의하고 따옴표 안에있는 % PATH % (백분율 부호로 묶인 PATH 단어)는 OS가 기존을 떠나도록합니다 PATH 값을 그대로 사용하고 다음 경로 (분할 기호 ';'뒤에 오는 경로)를 기존 값에 추가하십시오.

HTH


2

포인트 2에 관해서 는 채우기 PATH또는 다른 환경 변수 가있는 간단한 배치 파일을 사용하고 있습니다. 따라서 기본적으로 환경 변수의 오염은 없습니다. 이 배치 파일은 어디서나 액세스 할 수 있으므로 다음을 입력 할 수 있습니다.

c:\>mybatchfile
-- here all env. are available
c:\>php file.php

이것은 * nix-es와 Windows의 중요한 차이점입니다. 일괄 처리는 동일한 셸에서 실행되며 종료 후 (세션 범위에서) 환경 변경이 유지됩니다. 그러나 이렇게하면 두 가지 방식이 모두 줄어 듭니다. 배치 파일로 인해 환경이 사라질 수 있습니다. (BTW, * nix-es source에서는)와 같은 파일 이 필요합니다 . mybatchfile.
Tomasz Gandor

안녕하세요 @ grzegorz-gajos, 나는 정확히 그것을 찾고있었습니다. 자세한 내용은 귀하의 링크가 404를 제공합니다.
devkabiir

링크의 컨텐츠를 더 이상 사용할 수 없습니다. 나는 지웠다.
Grzegorz Gajos

1

명령 프롬프트에서 Cmd에게 Explorer 명령 줄을 사용하여 탐색기 명령 줄을 사용하도록 지시합니다 start.

그래서 start Yourbatchname .

이름이 다음과 같이 등록해야합니다. batchfile.exe .

프로그램과 문서를 레지스트리에 추가 할 수 있으므로 시작-실행 대화 상자 또는 바로 가기에 경로없이 이름을 입력하면 Windows에서 찾을 수 있습니다.

이것은 일반 reg 파일입니다. 아래 줄을 새 텍스트 문서에 복사하고 anyname.reg로 저장하십시오. 프로그램이나 문서를 사용하여 편집하십시오.

regedit는 \를 사용하여 키 경로에서 폴더 이름을 분리합니다. regedit는 단일 \를 사용하여 키 이름을 분리합니다. 모든 reg 파일은 REGEDIT4로 시작합니다. 세미콜론은 줄을 주석으로 바꿉니다. @ 기호는 명명 된 값이 아니라 키에 값을 할당하는 것을 의미합니다.

파일이 존재하지 않아도됩니다. Winword.exe를 열도록 Word.exe를 설정하는 데 사용할 수 있습니다.

입력 start batchfile하면 iexplore.exe가 시작됩니다.

REGEDIT4
;The bolded name below is the name of the document or program, <filename>.<file extension> 

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths\Batchfile.exe]

;The @ means the path to the file is assigned to the default value for the key.
;The whole path in enclosed in a quotation mark ".

@="\"C:\\Program Files\\Internet Explorer\\iexplore.exe\""

;Optional Parameters. The semicolon means don't process the line. Remove it if you want to put it in the registry

;Informs the shell that the program accepts URLs.

;"useURL"="1"

;Sets the path that a program will use as its' default directory. This is commented out.

;"Path"="C:\\Program Files\\Microsoft Office\\Office\\"

이미 다른 답변의 경로에 대해 들었습니다. 참조doskey /?cmd 매크로 (입력 할 때만 작동).

CMD에 대한 시작 명령을 실행할 수 있습니다. Windows Recource Kit 기술 참조에서

자동 실행

HKCU\Software\Microsoft\Command Processor 

Data type Range Default value 
REG_SZ  list of commands  There is no default value for this entry.  

기술

Cmd.exe를 시작할 때마다 실행되는 명령이 포함되어 있습니다.


1

제어판에 대한 더 좋은 대안은 Pathenator라는 sourceforge에서이 프리웨어 프로그램을 사용하는 것입니다.

https://sourceforge.net/projects/pathenator/

그러나 Windows 7, 8 또는 10과 같이 Dot.Net 4.0 이상이있는 시스템에서만 작동합니다.


1

명령을 실행하면 cmd해당 명령 창의 모든 시스템 변수가 업데이트됩니다.


어떤 의미에서. 현재 세션 내에서 새 세션을 시작하면됩니다. 나가려면 먼저 exit두 번 전화를 걸어 먼저 새 세션을 닫은 다음 첫 번째 세션을 닫으십시오 (이전 환경에서).
Farway

1

gtools 에서 경로를 사용

직관적 인 방식으로 작업을 수행합니다. 예 :

pathed /REMOVE "c:\my\folder"
pathed /APPEND "c:\my\folder"

새로운 cmd를 생성하지 않고도 결과 보여줍니다 !


0
  1. 그때 PHP를 설치했습니다. php-7 ***. zipC : \ php \ 로 추출
  2. 현재 PATH 환경 변수를 백업하십시오 : run cmd및 명령을 실행하십시오.path >C:\path-backup.txt

  3. 현재 경로 값을 C : \ path.txt 파일로 가져 오기

  4. path.txt를 수정하십시오 (내 경로 길이가 1024 자 이상이며 창은 몇 년 동안 실행됩니다)
    • 나는 거기에서 중복 경로를 제거했다. 'C : \ Windows . 또는 C : \ Windows \ System32; 또는 C : \ Windows \ System32 \ Wbem; -두번 있어요
    • 제거 된 프로그램 경로도 제거하십시오. 예 : C : \ Program Files \ NonExistSoftware;
    • 이 방법으로 내 경로 문자열 길이 <1024 :))))
    • 경로 문자열 끝에; C : \ php \를 추가하십시오.
    • 경로 값만 복사프레임 큰 따옴표를 사용하여 버퍼에 ! 예 : "C : \ Windows; ****; C : \ php \"아니요 PATH = 가 있어야합니다 !!!
  5. 관리자 권한으로 Windows PowerShell을 엽니 다.
  6. 명령을 실행하십시오.

setx path "Here you should insert string from buffer (new path value)"

  1. 터미널을 다시 실행하고 ( "Far manager"사용) 다음을 확인하십시오. php -v

0

사소한 일이지만 Windows다시 시작 해야했습니다. 이 문제에 직면했을 때 .

Windows 7 x64를 실행하고 있습니다. 시스템 PATH 변수를 수동으로 업데이트했습니다. 통계 메뉴에서 cmd.exe를 실행하면 정상적으로 작동합니다. 그러나 Windows 탐색기 주소 표시 줄에 "cmd"를 입력하면 수동 변경 사항이없는 다른 곳에서 PATH를로드하는 것 같습니다.

(의심을 피하기 위해-예, 다시 시작하기 전에 cmd를 두 번 닫았다가 다시 실행했지만 도움이되지 않았습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.