有人可以解释这个结果吗? 设置path后,它没有改变。 这是在pipe理员命令行中运行的:
C:\Windows\system32>setx path "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin"
成功:指定的价值得以保存。
C:\Windows\system32>path PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;D:\Program Files (x86)\metapad36;D:\Program Files (x86)\metapad36" /M
我读过%PATH%= PATHvariables为机器+ PATHvariables的用户。 我看到机器path+pipe理员的path?
看过关于这个话题的其他文章,但还是感到困惑。
我应该清除用户path,所以没有重复?
更新 :重新提示“这个工具创build或修改的variables将在未来的命令窗口中可用”我打开一个非pipe理员窗口,并input:
>path PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;;D:\Program Files (x86)\metapad36;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin
path重复两次。 好吧,然后在同一个提示我setx的path没有重复,没有/M
:
`>setx path "C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin"
成功:指定的价值得以保存
显然保存在当前的用户环境。
然后我打开一个新的 非pipe理员命令窗口,并且:
>path PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin;;D:\Program Files (x86)\metapad36;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\ProgramData\chocolatey\bin;D:\Program Files (x86)\Microsoft VS Code\bin
它没有改变。 为什么?
谢谢
在Windows中,每个进程都获得一个环境的副本,这个环境本质上是进程启动时全局环境的一个快照。 进程运行时对全局环境的更改不会传播回过程自己的环境副本。
为了回答实际的问题, setx
会修改用户环境(或者如果用/M
运行系统的话),但是在执行setx
的进程(在本例中为cmd.exe
)中,更改不会立即可见。 如果在运行setx
之后打开新的命令提示符,则会看到cmd.exe
实例中的更改。
这在setx /?
明确指出 帮帮我:
在本地系统上,由此工具创建或修改的变量将在未来的命令窗口中可用,但在当前的CMD.exe命令窗口中不可用。
要在全局环境和当前进程中执行相同的更改,您需要同时运行setx
和set
。