我曾经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%
。毕竟,这个变量的值永远不会改变。