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

其中显示我的本地安装的PHP

和哪里PHP显示全球PHP安装(共享环境)

这两个程序有不同的想法在哪里看。 它们也可以在不同的系统上以不同的方式实现。 在我的, whereis是一个二进制可执行文件, which是一个Bourne shell脚本。

如果您还想了解某些地方的其他意见,请尝试以下操作:

 type -a php 

 locate php 

whereis man页:

哪里有一个硬编码的path,所以可能并不总是find你要找的东西。

which man页:

它返回在当前环境中执行的文件的path名,它的参数在一个严格的符合POSIX的shell中作为命令给出。 它通过在PATH中search匹配参数名称的可执行文件来实现这一点。

因此, whereissearch使用$ PATHvariables的硬编码path, locate使用(默认情况下)整个文件系统的数据库,而type是Bash内build的,在$ PATH,builtins,aliases和函数定义。

我使用type和主要locate ,只有很less使用其他两个,因为它们的能力相对有限。

哦,为了回答你的问题, which ,因为它search$ PATH,如果你input命令“ php ”,更有可能向你显示实际运行的位置。 如果你有别名或者具有相同名字的函数,那么type可能会更好,因为它们优先于$ PATH位置执行。 请注意,所有这些都依赖于系统,也取决于您正在使用的shell(我的假设是它是Bash)。 在我的系统中,使用Bash,顺序是函数,别名,内build函数,然后是$ PATH(按目录在那里列出的顺序)。 比较这些不同命令的输出:

 echo $PATH