whereis
和which
都是Linux系统中用于查找文件的工具,但它们的目的和搜索方式有所不同。
- 搜索目的:
which
命令主要用于查找用户输入的命令或可执行文件的绝对路径。它搜索的是用户的PATH
环境变量中定义的目录,用于找到可以执行的命令。whereis
命令用于查找某个命令相关的二进制文件、源代码文件和手册页文件。它不仅搜索PATH
环境变量中的目录,还搜索默认的源代码和手册页目录。
- 搜索范围:
which
搜索的范围仅限于PATH
环境变量中定义的目录,不包含其他系统目录。whereis
搜索的范围包括PATH
环境变量中的目录,以及默认的源代码(通常是/usr/src
或/usr/local/src
)和手册页(通常是/usr/share/man
)目录。
- 输出结果:
which
命令的输出结果是第一个匹配的命令路径,如果存在多个同名命令,它只显示第一个找到的。whereis
命令的输出结果包括所有找到的匹配文件,如果存在多个同名文件,它会列出所有找到的路径。
- 选项使用:
which
命令的选项相对较少,常见的有-a
或--all
用于显示所有匹配的路径。whereis
命令有更多的选项,如-b
、-s
、-m
等,用于指定查找特定类型的文件。
- 更新数据库:
whereis
命令在查找之前会使用updatedb
命令来更新其数据库,这意味着它依赖于一个定期更新的数据库来查找文件。which
命令不依赖于外部数据库,它直接搜索PATH
环境变量中的目录。
总结来说,which
主要用于快速查找可执行文件的路径,而whereis
用于更全面地查找与命令相关的文件,包括源代码和手册页。在使用时,应根据需要查找的文件类型和详细程度选择合适的命令。