未重启 Windows 时,请勿刷新 ConEmu 中的 PATH 用户环境变量值

未重启 Windows 时,请勿刷新 ConEmu 中的 PATH 用户环境变量值

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快速环境编辑器

快速EE

Ctrl+S

我得到了 Clink 和 Hyper 的预期行为以及 ConEmu 的实际行为。

5. 没有帮助

  1. Refreshenv Chocolatey 脚本
  2. explorer.exe重新开始
  3. 关闭所有终端的所有窗口和标签
  4. resetvars.vbs脚本
  5. ConEmuC /export PATH

6. 不要提供

  1. 请不要重新启动 Windows。这会花费很多时间。

7.环境

操作系统及版本:
Windows 10 企业版 LTSB 64 位 EN
ConEmu:
170118 [64]
{远} 模式

答案1

对我来说只要我关闭所有conemu.execonemu64.exe或者甚至conhost.exe任何cmd.exe,但它们不应该影响 ConEmu)进程然后启动 ConEmu 就可以了,看一下:

但请注意一件重要的事情

如果你从以下位置启动 ConEmu(或任何其他程序)另一个程序像启动器或通过热键创建另一个程序或者甚至通过鼠标手势(使用类似 Strokes Plus 的工具)你需要重新启动该程序要使该程序接收新的环境变量/值(这些变量/值将提供给子程序),您可以在 Process Explorer 或 Process Hacker 等程序中查看哪些是子进程,哪些是父进程。因此,为了让子进程接收正确的环境变量/值,您需要重新启动其父进程(如果你从父母那里打电话给孩子)。

答案2

在 Win 11 中(我尚未在 Windows 的早期版本中确认),如果您使用控制面板来更新该值并保存它(如果您不知道它在哪里,请在控制面板中搜索关键字路径)然后打开命令提示符并执行依赖于 PATH 的命令,您会发现它已更新。

如果没有,请记住,在进行更改之前打开的命令提示符窗口将不会更新。关闭所有之前打开的命令提示符窗口并打开一个新窗口。
当然,您可以通过输入 PATH(大写或小写)进行确认,您应该会看到显示的完整 PATH 环境变量内容。
控制面板图像,搜索栏中输入关键字 PATH:
在搜索栏中输入关键字 PATH 的控制面板图像

答案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 运行时它都会更新路径。

文档:
ConEmu 配置 Cmd 提示符

相关内容