windows 如何决定运行哪个可执行文件

dgo*_*dgo 2 windows command-line

我的计算机上有几个地方有可执行文件,它们都添加到PATH.

有时,在某些情况下,我有多个具有相同名称的可执行文件,它们要么具有不同的配置,要么完全不同。例如我有原生的 WindowsFIND命令,我也有Windows的 Linux 端口find。这两者本身都非常有用,但做的事情却大不相同。

当我FIND从命令行执行时;默认情况下执行 Windows 版本,除非我在 Unix 版本的目录中。在这种情况下,这主要是我想要的,但也有不同的情况。我知道将运行的可执行文件将始终是我键入which <executable name>.

我的问题是:该可执行文件是如何选择的?为什么 Windows 选择Git位于...\msysgit\bin\git.exe而不是位于D:\bin\git.exe?这两个位置都在PATH. 是不是像PATH条目的顺序一样愚蠢?

phy*_*fox 8

Windows 首先检查当前工作目录,然后从左到右检查 PATH 变量中的每个路径,最后检查系统位置(例如 %WINDIR%)。这几乎与 Linux 相同,只是 Linux 不检查“.”。在 PATH 之前。

  • Linux 将此视为安全风险。例如,如果有人将可执行文件放入您的主目录,您可能会意外运行它而不是 /usr/bin。Windows 继承了 MS-DOS 的行为,后者具有相同的行为。 (4认同)