App*_*ion 6 windows path environment-variables
由于某种原因,某些环境变量在系统变量中的“PATH”变量中使用时不会扩展。
例如,%SystemRoot%可以正常工作,但%WinDir%不能。%ProgramFiles%并且%ProgramFiles(x86)%也不起作用。
显然我知道我可以使用完整路径而不是变量,但这不是重点。
有任何想法吗?
这是屏幕截图/示例:
SystemRoot按预期扩展,因为它是伪/预定义的环境变量。WinDir是一个常规环境变量,并且与其他环境变量“竞争”,例如PATH在初始化序列中一样。
Raymond Chen 在Windows Confidential 中做了最好的解释:隐藏变量:“将一个环境变量嵌入到另一个环境变量中只是一个良好的操作时机问题”。引用更多:
\n\n\n这里\xe2\x80\x99是环境搭建过程是如何进行的。它大致分为四个步骤:
\n\n
\n- 首先,系统创建一些预定义的计算机范围环境变量,例如 System\xc2\xadRoot 和 ALL\xc2\xadUSERS\xc2\xadPROFILE(但不是 COMPUTER\xc2\xadNAME 或 Program\xc2\xadFiles)。
\n- 其次,它从“环境变量”对话框的“系统”部分创建环境变量。系统环境变量定义可以使用 \xe2\x80\x9c%\xe2\x80\x9d 表示法来引用上一步中创建的预定义环境变量。例如,您可以将系统环境变量设置为 %System\xc2\xadDrive%\\Extras。系统环境完成后,Windows开始构建用户环境。
\n- 第三步是创建预定义的每用户环境变量,例如 USER\xc2\xadPROFILE 和 APP\xc2\xadDATA。与 COMPUTER\xc2\xadNAME 和 Program\xc2\xadFiles 相关的变量也在此处创建,尽管它们\xe2\x80\x99 从技术上讲是系统变量而不是每用户变量。
\n- 最后,系统创建环境变量。它们位于“环境变量”对话框的“用户”部分,可以访问前三个步骤创建的任何变量,因此您可以将用户环境变量设置为 %USER\xc2\xadPROFILE%\\Extras 或自定义系统环境变量在第二步中设置。如果用户环境变量与系统环境变量同名,则新值将替换旧值。
\n...
\n一位客户在将系统 PATH 环境变量设置为 %APPDATA%;C:\\Windows 时遇到困难。他们发现最终的环境仅包含指定的文字路径(百分号和全部),而不是用 APPDATA 环境变量的值替换它。如果您仔细查看之前详细介绍的操作顺序,就会清楚为什么会发生这种情况。他们试图根据尚未定义的变量设置系统环境变量。
\n解决方案很简单:将编辑路径从系统环境列表框移动到用户环境列表框。这样,当它想要使用 %APPDATA% 环境变量时,该变量就会在那里。
\n
对于基于其他变量定义环境变量时可能的“竞争条件”的简单示例,请考虑循环情况,其中将两个系统变量定义为:
\nbbb=%ccc%\nccc=%bbb%\nRun Code Online (Sandbox Code Playgroud)\n在我的 Windows 7 上,这会导致变量评估为:
\nC:\\etc>set\n...\nbbb=%ccc%\nccc=%ccc%\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
4451 次 |
| 最近记录: |