Windows 환경 변수에서 SETX와 SET의 차이점은 무엇입니까?


63

차이점은 무엇이며 SETX그리고 SET?

내 이해에 따르면 :
둘 다 환경 변수를 설정하는 데 사용되며
SETX사용자 변수입니다.
SET쉘 변수입니다.


3
시도 SET /?하고 SETX /?-그것은 당신에게 아이디어를 줄 것입니다.
Iszi

2
SETSETX에 대한 SS64 참조도 참조하십시오 . SS64는 여러 언어 및 명령 환경에 대한 훌륭한 명령 참조입니다. 특히 CMD 및 PowerShell에 유용합니다.
Iszi



답변:


83

나는 그렇게 간단하지 않다는 것을 두려워합니다. 환경 변수는 범위에 따라 제한되지 않지만 동사를 비교할 때 변수 값의 수명이 다를 수 있습니다.

Set현재 쉘 (창) 환경 값을 수정하고 변경 사항을 즉시 사용할 수 있지만 일시적입니다. 변경 사항은 실행중인 다른 셸에는 영향을 미치지 않으며 셸을 닫 자마자 다시 설정된 값을 실행할 때까지 새 값이 손실됩니다.

setx값을 영구적으로 수정하여 이후의 모든 쉘에 영향을 주지만 이미 실행중인 쉘의 환경은 수정하지 않습니다. 변경 사항을 적용하기 전에 셸을 종료했다가 다시 열어야하지만 다시 변경할 때까지 값이 수정 된 상태로 유지됩니다.

예를 보려면 여기를 참조하십시오 : http://batcheero.blogspot.com/2008/02/set-and-setx.html


13
그것은 매우 잘 쓰여졌지만 setx는 레지스트리를 바꾼다
barlop

실제로 여기에 설명 된 것보다 덜 간단합니다. 염두에 두어야 할 "휘발성"환경 변수가 있습니다. 또한 경우에 따라 SET 명령으로 표시되는 변수 목록은 사용자가 "elevated"명령 프롬프트를 호출했는지 여부에 따라 달라집니다.
kreemoweet 2016 년

10

실제로 우리는 세 가지 범위에서 변수를 설정할 수 있습니다.
1. Shell
2. User
3. System (Machine) 또는 Global

SET : 임시로 현재 쉘 범위를 작성하거나 업데이트합니다.

C:\Users\977246>set /?
Displays, sets, or removes cmd.exe environment variables.

SET [variable=[string]]

  variable  Specifies the environment-variable name.
  string    Specifies a series of characters to assign to the variable.

Type SET without parameters to display the current environment variables.

SETX : 영구적 인 현재 사용자 환경 변수를 작성하거나 업데이트합니다.

C:\Users\977246>setx /?

SetX has three ways of working:

Syntax 1:
    SETX [/S system [/U [domain\]user [/P [password]]]] var value [/M]

Syntax 2:
    SETX [/S system [/U [domain\]user [/P [password]]]] var /K regpath [/M]

Syntax 3:
    SETX [/S system [/U [domain\]user [/P [password]]]]
         /F file {var {/A x,y | /R x,y string}[/M] | /X} [/D delimiters]

Description:
    Creates or modifies environment variables in the user or system
    environment. Can set variables based on arguments, regkeys or
    file input.

To remove the variable set value to empty string as follows

Example: setx path ""

GUI 사용자 및 시스템 환경 변수

여기에 이미지 설명을 입력하십시오


3

다른 답변자가 놓친 요점 추가.

사용자 환경 변수 대신 시스템 환경 변수를 설정하려면 setx 명령에서 / m 옵션을 사용하고 관리자 권한 명령 프롬프트에서 실행하면됩니다.

setx variable value /m

예 : 관리자 권한으로 명령 프롬프트를 열고 실행

setx Path "%Path%;C:\Users\User\Libs" /m

설명 : 위 명령은 "C : \ Users \ User \ Libs"를 기존 경로 변수 (시스템 환경 변수)에 추가합니다.

/ m 인수가 없으면 사용자 수준 경로 변수 만 변경하거나 만듭니다.

setx 사용자 매뉴얼에서

/ M 변수가 시스템 전체 (HKEY_LOCAL_MACHINE) 환경에서 설정되도록 지정합니다. 기본값은 HKEY_CURRENT_USER 환경에서 변수를 설정하는 것입니다.

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