答案1
我针对 Microsoft Windows 回答了这个问题。我看到这里也有一个 Linux 标签。好吧,同样的概念适用。(最后一段提到了更多 Linux 注释。)
如果程序不在 PATH 环境变量指定的目录中,则可以使用它们。但是,这有点不太方便。
例如,我经常运行 7-Zip,即使它不在路径中。因此,我不会以“7z”开头命令行,而是以以下内容开头:
"C:\Program Files\7-Zip\7z.exe"
这并不像看起来那么糟糕,因为我实际输入的内容通常更像这样:
C:\ tabPro tab7 tab7tab
(我会听一下如果有拼写错误可能会发出的哔哔声,并且在我用tab密钥进行最后一次扩展之后,我还会检查命令行的准确性,以确保它按照我想要的方式运行。)
程序可以检查您在命令行上如何引用该程序,并可以检查您当前的目录。因此,程序可能会根据其是否在 PATH 中而采取不同的行动。但是,这种情况不太可能发生。
替代解决方案:调整 PATH 环境变量以包含安装程序的目录。
另一种替代解决方案:只需将可执行文件放入 PATH 中已有的目录中即可。(但是,某些程序更复杂,因为它们可能还需要将其他文件(如 DLL 文件)复制到此类目录中;因此,对于需要通过运行“安装程序”来“安装”的程序,通常不建议使用此方法。但是,对于无需大量支持文件即可运行的简单可执行文件,这通常是可行的。)
在 Linux 中,有一些细微的差别:您只需使用“ echo ${PATH}
”而不是“ echo %PATH%
”,使用正斜杠而不是反斜杠,使用7za
7-Zip 而不是7z.exe
。如果您希望调整路径,您可以使用不同的命令,例如export
,但实际上取决于您使用的 shell。)
答案2
为什么在 Windows 中有些程序需要路径值,而有些程序不需要?
为什么当我在 Windows 7/8/10 上安装 Composer 或一些适合 UNIX 的程序(如 GNU Tar)时,我需要设置它们的 Path 值,如果我不这样做,其他程序就无法使用它?
PATH 是类 Unix 操作系统、DOS、OS/2 和 Microsoft Windows 上的环境变量,用于指定可执行程序所在的一组目录。通常,每个执行进程或用户会话都有自己的 PATH 设置。
DOS、OS/2 和 Windows
某些程序可能会在安装过程中将其目录添加到 PATH 变量内容的前面,以加快搜索过程和/或覆盖 OS 命令。在 DOS 时代,习惯于在 中添加PATH {program directory};%PATH%
或SET PATH={program directory};%PATH%
行AUTOEXEC.BAT
。
当在命令 shell 中输入命令或程序进行系统调用来执行程序时,系统首先搜索当前工作目录,然后搜索路径,从左到右检查每个目录,查找与给定命令名匹配的可执行文件名。可执行程序的文件扩展名为EXE
或COM
,批处理脚本的文件扩展名为BAT
或CMD
。其他可执行文件扩展名也可以在系统中注册。
Unix 和类 Unix
当用户指定命令名称或从程序进行 exec 调用时,系统将搜索$PATH
,检查列表中从左到右的每个目录,查找与命令名称匹配的文件名。一旦找到,该程序将作为命令 shell 或发出命令的程序的子进程执行。
来源: PATH_(变量)
答案3
在 Windows 中,应用程序可以{HKCU|HKLM}\Software\Microsoft\Windows\CurrentVersion\App Paths
在注册表中注册其路径。这样 Windows 就会记住在哪里找到相应的 .exe 文件,而不会使PATH
环境变量膨胀。
从应用程序注册:
针对每个用户安装的应用程序可以注册在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\App Paths 下。针对计算机的所有用户安装的应用程序可以注册在 HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\App Paths 下。
应用程序路径下的条目主要用于以下目的:
- 将应用程序的可执行文件名映射到该文件的完整限定路径。
- 根据每个应用程序、每个进程将信息添加到 PATH 环境变量的前面。
例如,默认的 Windows 安装具有以下注册表项:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WORDPAD.EXE
(Default)="%ProgramFiles%\Windows NT\Accessories\WORDPAD.EXE"
这样,即使不在 PATH 中,也可以通过输入wordpad
(或在 cmd 提示符下)从“开始/运行”启动写字板。start wordpad
%ProgramFiles%\Windows NT\Accessories