为什么 Windows 11 中的 Windows 终端在使用上下文菜单打开时无法解析环境变量?

为什么 Windows 11 中的 Windows 终端在使用上下文菜单打开时无法解析环境变量?

我曾经sysdm.cpl在系统范围内设置以下两个环境变量:

JAVA_HOME=%ProgramFiles%\Java\jdk-8
M2_HOME=%ProgramFiles%\Apache\maven

当使用 Windows 资源管理器的上下文菜单在任意目录上启动 Windows 终端时,这些环境变量无法正确解析:

Windows PowerShell
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

Installieren Sie die neueste PowerShell für neue Funktionen und Verbesserungen! https://aka.ms/PSWindows

PS C:\[...]> cmd
Microsoft Windows [Version 10.0.22621.2134]
(c) Microsoft Corporation. Alle Rechte vorbehalten.

C:\[...]>set
[...]
HOMEDRIVE=C:
HOMEPATH=\Users\THS
JAVA_HOME=%ProgramFiles%\Java\jdk-8
LOCALAPPDATA=C:\Users\THS\AppData\Local
M2_HOME=%ProgramFiles%\Apache\maven
NVM_HOME=C:\Users\THS\AppData\Roaming\nvm
NVM_SYMLINK=C:\Program Files\nodejs

使用 Windows 搜索启动 Windows 终端时,将解析这些变量:

Windows PowerShell
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.

Installieren Sie die neueste PowerShell für neue Funktionen und Verbesserungen! https://aka.ms/PSWindows

PS C:\Users\THS> cmd
Microsoft Windows [Version 10.0.22621.2134]
(c) Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\THS>set
[...]
HOMEDRIVE=C:
HOMEPATH=\Users\THS
JAVA_HOME=C:\Program Files\Java\jdk-8
LOCALAPPDATA=C:\Users\THS\AppData\Local
M2_HOME=C:\Program Files\Apache\maven
NVM_HOME=C:\Users\THS\AppData\Roaming\nvm
NVM_SYMLINK=C:\Program Files\nodejs

有趣的是,PSModulePath在这两种情况下都得到了正确的解决。在中设置了以下内容sysdm.cpl

PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;%SystemRoot%\system32\WindowsPowerShell\v1.0\Modules

虽然以下内容在 per-dir 终端中是可读的......

PSModulePath=C:\Users\THS\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

与使用 Windows 搜索打开的终端相比:

PSModulePath=C:\Users\THS\Documents\WindowsPowerShell\Modules;C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules

对此有什么解释吗?谢谢!

答案1

这听起来像是 Windows 中的一个错误(或者更确切地说是不一致性),您可以通过反馈中心发出信号,但修复它取决于微软。

你可能暂时避免使用这样的变量 %ProgramFiles%。毕竟,这个变量的值永远不会改变。

相关内容