envir
当我使用命令设置环境变量时setx
,它似乎并没有在环境中真正“设置”。
setx envir "windows"
if 1==1 (
setx envir "unix"
)
echo %envir%
set
该set
命令显示环境变量列表,但不显示上一行当前设置的变量。
答案1
在您的示例中,环境变量%ENVIR%
设置为"windows
“。这存储在注册表中特定于用户的环境变量中Windows
。更改不会直接反映在当前活动进程的环境中。
要通过set
命令实际查看此新设置,您必须使用 打开一个新的命令框cmd.exe
。当前命令框不会自动从注册表中重新读取更改的设置。您也可以使用系统控制SYSTEM
并查看Extended Properties / Environment
:
答案2
阿克塞尔是正确的。
setx
将变量存储在注册表中,但更改不会反映在任何正在运行的程序(包括当前程序)的环境中。
以下是输出的一些相关部分setx /?
:
C:\>setx /?
Description:
Creates or modifies environment variables in the user or system
environment. Can set variables based on arguments, regkeys or
file input.
NOTE: 1) SETX writes variables to the master environment in the registry.
2) On a local system, variables created or modified by this tool
will be available in future command windows but not in the
current CMD.exe command window.
3) On a remote system, variables created or modified by this tool
will be available at the next logon session.