whereis -B 的核心作用是限定二进制文件搜索范围,仅在用户指定的路径中查找同名可执行文件,不查默认路径、不查非二进制文件、不依赖PATH,且需用-f分隔路径列表与命令名。

whereis -B 的核心作用不是“限定查找系统底层二进制命令”,而是指定二进制文件的搜索范围——它只在你明确给出的路径列表中查找,不查默认路径,也不查源码或手册页。
明确 -B 的行为逻辑
-B 后必须跟一个或多个目录路径,用冒号 : 分隔;-f 是必需的分隔符,用来告诉 whereis “路径列表到此结束,后面是命令名”。
- 它不会自动识别哪些是“系统底层命令”,只是机械地在你给的路径里找同名可执行文件
- 若目标命令不在你指定的路径中,即使它真实存在于
/usr/bin或/bin,也不会被找到 - 它不依赖 PATH,也不检查文件是否真有执行权限,只看是否存在同名文件
典型用法示例
假设你想确认 ls 是否安装在自定义的工具目录中:
whereis -B /opt/mytools/bin:/usr/local/bin -f ls
输出可能为:ls: /usr/local/bin/ls(如果该路径下存在 ls)
若两个路径下都无 ls,则输出:ls:(空结果,仅带冒号)
和默认行为的关键区别
- 普通
whereis ls:自动扫描/bin、/usr/bin、/usr/local/bin等标准位置,同时返回二进制、man、源码路径 - 加
-B ... -f:跳过所有默认路径,只查你列出来的目录,且只返回二进制路径(即使对应 man 页也存在,也不会显示)
实用建议
- 想查系统底层命令(如
init、mount、udevadm)是否在特定安全加固路径(如/sbin或/usr/sbin)中,可用:whereis -B /sbin:/usr/sbin -f mount - 搭配
-l可先查看当前 whereis 实际使用的二进制搜索路径:whereis -l | grep binary - 注意:-B 不会递归子目录,路径必须精确到包含可执行文件的目录层级


















