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