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

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콘솔을 사용하여 프로그래밍 방식으로 배치 파일로 변수 에 디렉토리를 추가하는 방법은 무엇입니까?


답변

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

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


답변

옵션 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.

답변

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

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

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

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

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

노트:

  • 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\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하여 디렉토리가 실제로 존재하는지 확인하십시오.


답변

더 안전한 SETX

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

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

경고

  1. 백업PATHSETX1024 자보다 더 이상 쓰레기를 자릅니다
  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. 엄격히 사실이 아님


답변

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

set PATH=%PATH%;%CD%

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

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