为什么我能够执行不在我的 PATH 环境变量中的程序?

为什么我能够执行不在我的 PATH 环境变量中的程序?

我想知道为什么命令java -version全球无障碍?

我可以从任何目录运行它并且它可以正常工作:

在此处输入图片描述

它是如何工作的?

我的系统PATH变量如下所示:

C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;
%SystemRoot%\system32;
%SystemRoot%;
%SystemRoot%\System32\Wbem;
%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

对我来说,java.exe位于%programfiles%\java\jre7\bin

答案1

通常,Windows 会找到一组目录,其中会重复使用可执行文件,但实际上,没有特定的理由将命令用作全局命令或不用作全局命令。开发人员过去常常将其作为“全局”命令包含在他们想要的任何位置,他们可以自由地这样做。如果您想将任何命令用作“全局”,则需要将命令添加为“Windows 环境变量”。为此,您可以使用以下方法

  1. 使用“Windows 系统属性”手动添加: 在此处输入图片描述

  2. 使用附加工具Setx.exe:

它不是标准 Windows XP 设置的一部分,但 Windows XP Service Pack 2 支持工具中包含一个名为 setx.exe 的命令行工具。此工具扩展了 set 命令,以便可以对环境变量进行永久更改。例如,要将文件夹 C:\New Folder 添加到路径中,命令将是

setx path "%PATH%;C:\New Folder" 
  1. 列出环境变量的脚本:

“Set”命令可以在命令提示符中与重定向到文本文件一起使用,以列出当前环境变量。该命令可能是

set > C:\env_list.txt 

文件名“C:\env_list.txt”可以替换为您选择的任何名称。

Microsoft 还有一个 VBScript,可以列出这一页

  1. 环境变量的注册表项:

对于有编辑注册表经验的用户,还有另一种方法可以更改环境变量。用户环境变量存储在注册表中的键中:

HKEY_CURRENT_USER\Environment

系统变量位于以下键中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

请注意,任何需要扩展的环境变量(例如 %PATH%)都必须作为 REG_EXPAND_SZ 注册表值存储在注册表中。编辑注册表主要用于系统管理员使用的脚本,不建议普通 PC 用户这样做。

您可以找到有关它的更多信息这里。

答案2

“全局命令”由您的环境变量决定。

根据您使用的操作系统,设置方法是相当不同的。

最通用的方法是

右键单击“我的电脑”选择“属性”

在 Windows7 中,您必须在左侧窗格中选择“高级系统设置”。

打开系统属性对话框后,选择“高级”选项卡。

在底部有一个按钮“环境变量”

在环境变量对话框中,您将能够为每个用户或整个系统配置环境变量。

例如,系统变量“路径”简化后看起来像这样...

C:\Program Files\Java\jre6\bin;C:\Ruby19\bin;

可以直接从命令行调用这些路径中的可执行文件。

您可以从运行对话框中调用 calc、mspaint、cmd 的原因是 C:\windows\system32 位于 Path 环境变量中。

您可以将自定义路径添加到环境变量中,注意不要覆盖现有路径,并使用分号分隔路径。“;”

然后,您可以直接在命令行中从该路径运行可执行文件,而无需输入整个路径,例如 java -version 命令。

欲了解更多内容,请参阅以下链接...

环境变量

了解并配置环境变量

新安装时搜索 Java.exe

答案3

这是一个简单的示例which,它显示 PATH 中当前 PATHEXT 扩展的所有命令命中:

@for %%I in ("%path:;=\" "%") do @for %%E in (%pathext:;= %) do @if exist "%%~dpI%1%%E" @echo %%~dpI%1%%E

把它放进去where.cmdwhich如果得到它,允许它来自其他地方!)并用 调用它where java

现在,在我上面的评论中,我建议java如果不是出现在你的PATH,你可以签到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths [参考],但实际尝试后,它不适用于命令行,只适用于使用的东西ShellExecuteEx,例如开始运行startCLI 命令。

答案4

当您输入命令时,shell 会查看名为 PATH 的环境变量(%PATH%、$PATH,具体取决于操作系统)。它会查询 PATH 上的每个目录,以查看是否遇到与您输入的命令匹配的可执行文件。它找到的第一个文件将被执行。

请参阅其他答案,了解设置 PATH 变量的各种方法。

相关内容