whereis 与 which 命令的区别
1. 什么是 whereis 命令?
whereis 命令用于定位与某个命令相关的 二进制文件、源代码 和 手册页。它通过系统的预定义路径搜索,而不仅仅依赖于 $PATH 环境变量。
whereis 的基本语法
whereis [选项] 文件名
常见选项
-b:仅搜索二进制文件。-m:仅搜索手册页文件。-s:仅搜索源代码文件。-u:仅显示没有相关文件的命令。-B:指定搜索二进制文件的目录。-M:指定搜索手册页的目录。-S:指定搜索源代码的目录。
示例
whereis ls
输出示例:
ls: /bin/ls /usr/share/man/man1/ls.1.gz
表示 ls 命令的二进制文件位于 /bin/ls,其手册页位于 /usr/share/man/man1/ls.1.gz。
2. 什么是 which 命令?
which 命令用于查找指定命令的 可执行文件路径。它仅从 $PATH 环境变量指定的路径中查找,而不会考虑手册页或源代码。
which 的基本语法
which [选项] 命令名
常见选项
-a:显示所有匹配的路径(包括$PATH中的所有版本)。
示例
which python
输出示例:
/usr/bin/python
表示系统在 $PATH 中找到的第一个 Python 可执行文件位于 /usr/bin/python。
3. whereis 与 which 的核心区别
| 特性 | whereis | which |
|---|---|---|
| 作用 | 查找命令的二进制文件、手册页和源代码路径。 | 查找命令的可执行文件路径。 |
| 搜索范围 | 在系统的预定义路径中搜索,包括 /bin、/usr/bin 等目录。 | 仅搜索 $PATH 环境变量指定的目录。 |
| 支持文件类型 | 二进制文件、手册页、源代码。 | 仅支持可执行文件。 |
| 可选项支持 | 支持多种选项指定不同类型的文件搜索(如 -b、-m)。 | 功能较为简单,选项有限(如 -a 显示所有路径)。 |
| 结果的完整性 | 能返回更多信息,包括手册页路径等。 | 仅返回首个匹配路径(除非使用 -a)。 |
4. 使用场景对比
使用
which的场景确认一个命令是否可以执行,例如:
which curl
查看命令的实际路径(用于调试 PATH 环境变量问题)。
使用
whereis的场景查找命令的相关手册页或源代码文件,例如:
whereis gcc
确保命令的二进制文件与文档都已正确安装。
5. 示例对比
假设我们要查找 bash 命令:
使用
which:which bash
输出示例:
/usr/bin/bash
只返回
bash的可执行文件路径。使用
whereis:whereis bash
输出示例:
bash: /usr/bin/bash /usr/share/man/man1/bash.1.gz
返回
bash的可执行文件路径和手册页路径。
6. 总结
which是轻量级工具,仅关注于从$PATH中定位可执行文件。它的用途非常简单:确认一个命令是否存在及其可执行路径。whereis是更全面的工具,可以帮助你定位与命令相关的所有文件(包括二进制、手册页和源代码)。当你需要更多关于命令的附加信息时,whereis是更好的选择。
在日常工作中,根据具体需求选择合适的工具,可以大大提高效率。希望通过本文,你能更好地理解 which 和 whereis 的功能,并将它们灵活运用到你的 Linux 系统管理中!
1、部分文章来源于网络,仅作为参考。 2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!






