为什么我的 WHICH PHP 与 WHEREIS PHP 的值不同?

为什么我的 WHICH PHP 与 WHEREIS PHP 的值不同?

显示我本地安装的 php

whereis php 显示全局 php 安装(共享环境)

答案1

这两个程序对于查找位置有不同的想法。它们也可以在不同的系统上以不同的方式实现。在我的系统中,whereis是一个二进制可执行文件,而另一个which是 Bourne shell 脚本。

如果你还想了解关于某个地方的其他信息,请尝试以下方法:

type -a php

locate php

whereis man页面:

whereis 有一个硬编码路径,因此可能无法总是找到您要查找的内容。

which man页面:

如果其参数是作为严格符合 POSIX 规范的 shell 中的命令给出的,则返回将在当前环境中执行的文件的路径名。它通过在 PATH 中搜索与参数名称匹配的可执行文件来实现此目的。

因此,whereis搜索硬编码路径,which使用 $PATH 变量,locate使用(默认)整个文件系统的数据库,并且type(它是 Bash 内置函数)查找 $PATH、内置函数、别名和函数定义。

我主要使用typelocate,很少使用另外两个,因为它们的功能相对有限。

哦,为了回答您的问题,which因为它搜索 $PATH,所以更有可能向您显示键入命令“ php”时实际运行的位置。type如果您有同名的别名或函数,则可能会更好,因为它们优先于 $PATH 位置执行。请注意,所有这些都取决于系统,也取决于您使用的 shell(我假设它是 Bash)。在我的系统上使用 Bash,顺序为函数、别名、内置命令,然后是 $PATH(按照目录在那里列出的顺序)。将这些不同命令的输出进行比较:

echo $PATH

相关内容