whereis 与 which 命令的区别

阅读:7 2025-01-16

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. whereiswhich 的核心区别

特性whereiswhich
作用查找命令的二进制文件、手册页和源代码路径。查找命令的可执行文件路径。
搜索范围在系统的预定义路径中搜索,包括 /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 是更好的选择。

在日常工作中,根据具体需求选择合适的工具,可以大大提高效率。希望通过本文,你能更好地理解 whichwhereis 的功能,并将它们灵活运用到你的 Linux 系统管理中!


标签: Linux
声明

1、部分文章来源于网络,仅作为参考。
2、如果网站中图片和文字侵犯了您的版权,请联系1943759704@qq.com处理!