为什么不能在 %PATH% 中使用 %USERPROFILE%?

为什么不能在 %PATH% 中使用 %USERPROFILE%?

在我的 Windows 7 机器上,使用系统属性 > 环境变量工具,我尝试将其添加%USERPROFILE%\Bin到系统变量中。由于某种原因,尽管运行正常PATH,但该方法不起作用。%SystemRoot%\system32

当我尝试从控制台运行命令时,即使找到了文件夹中的文件,也System32找不到 Bin 文件夹中的文件。

UserProfile我所看到的和之间的唯一区别SystemRoot是前者是用户变量而后者是系统变量。

echo %USERPROFILE%\Bin产量c:\Users\zano,如果我c:\Users\zano\Bin明确添加,一切都正常工作。

这里有什么问题?

答案1

系统变量在用户变量之前设置。因此,在设置系统变量时,您的用户变量都还不存在。

您可能能够创建一个名为 PATH 的新用户变量并将其设置为“ %USERPROFILE%\Bin;%PATH%”。我还没有测试过,但它可能做你想做的事。不过,USERPROFILE 可能仍未设置,因此你可能需要将路径硬编码到你的用户变量中,但至少它不会影响计算机上的其他用户。

答案2

Stephen Jennings 是对的,但需要澄清一点。在 Windows 中,如果用户变量 Path 存在,则会自动将其附加到系统变量 Path。用户变量 Path 可以使用 %UserProfile%,而系统变量则获取文字“%UserProfile%”。

因此,只需创建用户变量“Path”并将其设置为 %UserProfile%\Bin 即可。

示例 1:

系统变量路径 = C:\WINDOWS\ 用户变量路径 = %UserProfile%\Bin

用户的路径将是

C:\WINDOWS;C:\用户\用户\Bin

示例 2:

系统变量路径 = C:\WINDOWS\;%UserProfile%\Bin

用户变量路径根本没有设置。

用户的路径将是

C:\WINDOWS\;%UserProfile%\Bin

您不想要示例 2。

答案3

与斯蒂芬所说的类似,但是

创建一个名为 PATH 的用户环境变量,在此变量中您可以正确使用 %USERPROFILE% - USERPROFILE 在处理用户部分之前会展开。此用户 PATH 将自动附加到系统路径,因此无需添加 %PATH% 部分。

例如

系统变量:PATH=c:\path1 用户变量 PATH=%USERPROFILE%\path2

结果路径:PATH=c:\path1;C:\Users\myuser\path2

相关内容