1. 总结
如果我在 ConEmu 中工作,PATH 用户环境变量的值不会刷新。我需要重新启动 Windows。
2. 预期行为
我用Chocolatey 刷新脚本如果我跑refreshenv
进去超级终端或者碰杯:
C:\Users\SashaChernykh>zeal
'zeal' is not recognized as an internal or external command,
operable program or batch file.
C:\Users\SashaChernykh>refreshenv
Refreshing environment variables from registry for cmd.exe. Please wait…Finished..
C:\Users\SashaChernykh>zeal
Zeal 帮我成功运行。
3. 实际行为
在 ConEmu 中:
C:\Program Files\Far Manager>zeal
'zeal' is not recognized as an internal or external command,
operable program or batch file.
C:\Program Files\Far Manager>refreshenv
Refreshing environment variables from registry for cmd.exe. Please wait…Finished..
C:\Program Files\Far Manager>zeal
'zeal' is not recognized as an internal or external command,
operable program or batch file.
4. 复现步骤
我下载Zeal 计划通过巧克力味→ 我通过以下方式在用户环境变量中添加C:\Program Files (x86)\Zeal
—— 路径zeal.exe
快速环境编辑器:
→ Ctrl+S。
我得到了 Clink 和 Hyper 的预期行为以及 ConEmu 的实际行为。
5. 没有帮助
6. 不要提供
- 请不要重新启动 Windows。这会花费很多时间。
7.环境
操作系统及版本:
Windows 10 企业版 LTSB 64 位 EN
ConEmu:
170118 [64]
{远} 模式
答案1
对我来说只要我关闭所有conemu.exe
(conemu64.exe
或者甚至conhost.exe
任何cmd.exe
,但它们不应该影响 ConEmu)进程然后启动 ConEmu 就可以了,看一下:
但请注意一件重要的事情:
如果你从以下位置启动 ConEmu(或任何其他程序)另一个程序像启动器或通过热键创建另一个程序或者甚至通过鼠标手势(使用类似 Strokes Plus 的工具)你需要重新启动该程序要使该程序接收新的环境变量/值(这些变量/值将提供给子程序),您可以在 Process Explorer 或 Process Hacker 等程序中查看哪些是子进程,哪些是父进程。因此,为了让子进程接收正确的环境变量/值,您需要重新启动其父进程(如果你从父母那里打电话给孩子)。
答案2
答案3
创建此用户设置 ConEmu 文件:
"%USERPROFILE%\.conemu\CmdInit.cmd"
将此代码放入文件中初始化命令:
:: Retrieve User & System PATHS from the registry
for /f "tokens=2,*" %%A in ('reg query "HKCU\Environment" /v Path ^| find "Path"') do set USER_PATH=%%B
for /f "tokens=2,*" %%A in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path ^| find "Path"') do set SYS_PATH=%%B
:: Merge PATHS with ConEmu's PATH
set "PATH=%ConEmuBaseDir%\Scripts;%USER_PATH%%SYS_PATH%"
现在每次 ConEmu 运行时它都会更新路径。