powershell启动时只读取一次path,修改后必须重启窗口才能生效;vs code同理需重载窗口或重启应用,且执行策略限制也可能阻止初始化脚本加载path补丁。

PowerShell没读到新PATH,重启是硬性要求
改完系统PATH后,在已打开的PowerShell里执行gcc --version失败,不是配置错了,而是PowerShell根本没加载新变量。它只在启动时读一次Path,之后不会自动刷新。
必须完全关闭所有PowerShell窗口(包括任务栏残留进程),再重新打开终端。VS Code同理——关掉整个应用,不只是关终端标签页。否则$env:PATH里永远看不到你刚加的C:\msys64\mingw64\bin这类路径。
PATH里有多个MinGW路径,优先级会打架
Windows按PATH中从左到右的顺序找gcc。如果前面有个坏路径(比如指向已卸载的旧MinGW),就会卡在“找不到”而不是继续往后找。
- 运行
$env:PATH -split ';',逐行检查是否混入了mingw、gcc关键词 - 删掉重复或失效的路径,只保留一个有效路径,比如MSYS2安装的
C:\msys64\mingw64\bin - 避免手动拼接
$env:PATH += ";C:\path",容易引入空格或分号错误
VS Code终端默认不继承最新环境变量
即使你在系统里配好了PATH,VS Code启动时可能仍用旧快照。这不是bug,是它的进程隔离机制。
- 确认VS Code是否以管理员身份运行(有时权限影响环境读取)
- 在VS Code里按
Ctrl+Shift+P,输入“Developer: Reload Window”,强制重载环境 - 或者直接删掉
%USERPROFILE%\AppData\Roaming\Code\User\globalStorage下缓存(慎用)
PowerShell执行策略阻止初始化脚本加载
某些MinGW或Conda的初始化逻辑依赖PowerShell脚本,但默认策略Restricted会直接禁用,导致PATH补丁没生效。
运行以下命令解除限制:Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
然后必须重启PowerShell,否则策略变更不生效。
别用-Scope LocalMachine,普通用户没权限;也别选Unrestricted,安全风险高。
真正卡住的地方往往不是“怎么加PATH”,而是PowerShell的变量快照机制和VS Code的进程缓存——这两个点不处理,配一百遍PATH都没用。











