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

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

SETX이들 그리고 의 차이점은 무엇인가요 SET?

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

답변1

그렇게 간단하지는 않은 것 같습니다. 환경 변수는 귀하가 제안한 것처럼 범위에 의해 제한되지 않지만 동사를 비교할 때 변수 값의 수명이 다르다는 것이 맞습니다.

set현재 셸(창)의 환경 값을 수정하며 변경 사항은 즉시 적용 가능하지만 일시적입니다. 변경 사항은 실행 중인 다른 셸에는 영향을 주지 않으며, 셸을 닫자마자 set을 다시 실행할 때까지 새 값은 손실됩니다.

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

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

답변2

실제로 우리는 세 가지 범위에서 변수를 설정할 수 있습니다.
1. 셸
2. 사용자
3. 시스템(머신) 또는 글로벌

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"를 추가합니다.

없이/중인수를 사용하면 사용자 수준 경로 변수만 변경하거나 생성합니다.

setx 사용자 매뉴얼에서,

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

답변4

setx.exe사용자/시스템 환경 변수를 설정하는 프로그램입니다.기재, 이는 향후 프로세스 생성에 사용됩니다. set보여주는 명령이다프로세스현재 프로세스의 PEB에 있는 매개변수 블록에 있는 환경의 환경 변수(사용자 및 시스템 변수는 물론 을 사용하여 현재 또는 상위 프로세스에 의해 정의된 변수를 보여줌 set) 프로세스 탐색기를 통해 현재 프로세스와 환경의 변화를 확인할 수 있습니다.

cmd /c set variable=valuecmd.exe생성된 하위 프로세스(상위 콘솔 창에 연결되고 자체 할당하지 않고 상위 환경을 상속함)에 대한 변수를 설정하므로 이후에 동일한 창 내에서 cmd.exe수행할 때 적용되지 않습니다 . set상위 프로세스를 참조하고 있기 때문입니다 cmd.exe. 최상위 프로세스는 레지스트리에서 직접 환경을 상속하고 explorer.exe환경 변수를 동적으로 업데이트하므로(대부분의 다른 앱과 달리) setx현재 프로세스 환경을 업데이트하지도 않고 에서 읽는 레지스트리만 업데이트하거나 프로세스가 읽 explorer.exe습니다 explorer.exe. 환경 변수를 설정하는 Windows API 함수에 의해 업데이트됩니다(가능성은 낮음). 미래에 열리는 cmd.exes는 explorer.exe자식이므로 의 환경을 상속받습니다.

관련 정보