首页/系统/Linux 运维命令速查/whereis 查找命令的二进制与手册
文件与目录76 条

whereis 查找命令的二进制与手册

定位命令的程序、源码与 man 手册位置;面对系统里散落多套安装时,比 which 提供更多线索。

Linux 运维命令速查系统更新于 2026-10-13

whereis 查的是什么

whereis 定位命令的二进制、源码与 man 手册位置,默认同时给出 -b(二进制)、-m(手册)、-s(源码)的结果。它和 which 的差别在查找范围:whereis 只在标准目录(/bin、/sbin、/usr/bin、/usr/sbin、/usr/share/man 等)里找,which 按当前 PATH 顺序解析。因此“命令是否存在、手册装没装”用 whereis,“实际会执行哪一个”用 command -v 或 type -a,装在自定义目录的软件则要直接 find。

基本信息

适用平台Linux(util-linux);macOS/BSD 实现略有差异
权限要求普通用户
语法whereis [-bms] 名称;-B/-M/-S 可自定义搜索目录
查找范围标准系统目录,不含 /opt、/usr/local 等
相关命令which、command -v、type -a、find

典型使用场景

  • 确认命令是否存在、man 手册是否安装(man 打不开时先查这里)
  • 检查同一命令是否存在多个安装位置(系统包与手工版共存)
  • 只想要二进制路径时用 -b,避免手册目录混进结果
  • 排查“命令能跑但文档找不到”的环境差异
  • 定位源码目录,作为发行版自带源码包场景的辅助手段

常用示例

常用示例
whereis python3                # 二进制与手册一起给出
whereis -b nginx               # 只看二进制路径
whereis -m ls                  # 只看 man 手册路径
whereis -s bash                # 只看源码目录
command -v nginx               # 当前 shell 实际会执行哪一个,不依赖标准目录假设
type -a nginx                  # 列出所有同名命令的解析顺序,多版本共存时最有用
find /opt /usr/local -maxdepth 3 -name nginx -type f   # 非标准目录安装的兜底查法

几个查找命令的区别

命令查找依据适合场景
whereis标准目录(二进制、手册、源码)判断是否存在、文档是否安装
which当前 PATH 顺序确认实际会执行哪一个
command -vshell 自身解析结果(含内建、别名、函数)最可靠的存在性判断
type -ashell 解析顺序全列表多版本共存时看清优先级
find实时遍历文件系统自定义目录安装、标准目录之外的情况
输出里的 /usr/share/man/... 是手册路径而不是可执行文件。写脚本解析时先加 -b 过滤二进制,避免把手册目录当成命令位置。
手工编译安装到 /usr/local 或 /opt 下的程序通常查不到:这不是缺文件,而是超出了 whereis 的搜索范围;可用 -B/-M/-S 指定目录,或直接用 find。

易错点

  • 把 whereis 当成“命令是否可用”的判据:它不看 PATH,也不识别 shell 别名与函数,判断可用性要用 command -v
  • 解析输出时不区分类型:结果里混着二进制、手册与源码路径,不加 -b 容易把手册路径当成可执行文件
  • 在非标准目录安装的软件上反复查:/opt、/usr/local、容器挂载目录都超出搜索范围,改用 find 或指定目录
  • 以为 whereis 能列全同名版本:它只报标准目录中的结果,多版本共存判断要用 type -a 或 which -a

数据来源与参考

  • man 1 whereis(util-linux 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌