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处理!