Linux中locate和which的区别

Linux中locate和which的区别

Linux 中locate和有什么区别?which

为什么当我使用时locate mentor它会列出所有的导师但是当我使用时which mentor它说“没有导师......” - 这是什么意思?

答案1

locate和有什么区别which

locate使用先前建立的数据库来定位文件。

locate读取由updatedb(8) 准备的一个或多个数据库,并将与至少一个 PATTERN 匹配的文件名写入标准输出,每行一个。

来源定位(1) - Linux 手册页

updatedb创建或更新 (1) 使用的数据库locate。如果数据库已存在,则将重用其数据,以避免重新读取未更改的目录。

updatedb通常由(8)每天运行cron以更新默认数据库(/var/lib/mlocate/mlocate.db

来源updatedb(8) - Linux 手册页


which通过在环境变量中的目录中搜索来查找可执行文件PATH

which接受一个或多个参数。对于每个参数,它会打印出stdout在 shell 提示符下输入此参数时将执行的可执行文件的完整路径。它通过在环境变量中列出的目录中搜索可执行文件或脚本来实现此目的PATH

bash使用与(1)相同的算法。

来源which(1) - Linux 手册页


locate mentor列出了导师,但which mentor说“没有导师……”

这意味着什么?

mentor您有一些可以在数据库中找到的文件locate

您没有以 命名的可执行文件或mentor脚本PATH

答案2

which是定位一个命令(which返回在当前环境中执行的文件/链接的路径名)

locate是通过名称查找文件(locate读取一个或多个数据库准备的updatedb并将与至少一种模式匹配的文件名写入标准输出,每行一个)

答案3

locate默认采用 glob 模式(也可以使用正则表达式模式)并在数据库中搜索/var/lib/mlocate/mlocate.db与该模式匹配的任何文件名。

which是在环境变量解释的目录中搜索命令的完整路径的命令PATH

相关内容