whereis命令中“仅查找二进制文件”应使用小写-b参数,-B是大写参数,用于指定自定义二进制搜索路径(需配合-f使用),不控制搜索类型;-b才真正限定只查标准路径下的二进制文件。

要用 whereis 限定只查系统命令的二进制可执行文件,核心是用 -b 参数,不是 -B。
为什么不是 -B?
-B 是用来指定自定义搜索路径的,比如 whereis -B /opt/mybin -f ls,它本身不控制“只查二进制”,必须配合 -f 和目标名使用,且不常用。真正实现“仅查找二进制文件”功能的是小写的 -b。
正确用法:-b 参数
whereis -b 会只在系统内置的标准二进制路径(如 /bin、/usr/bin、/usr/local/bin 等)中查找已安装的命令,忽略手册页和源码。
-
whereis -b ls→ 输出类似ls:/bin/ls -
whereis -b python3→ 可能列出/usr/bin/python3和/usr/local/bin/python3 - 若命令不存在或不在标准路径,输出为
ls:(冒号后为空)
注意它的局限性
whereis -b 查的是静态索引里的“系统认为该在哪”,不是你当前能运行到的:
- 查不到当前目录下的
./mytool - 查不到
/home/user/bin里没被收录进数据库的程序 - 查不到 alias、shell builtin(如
cd)、函数或符号链接指向的目标 - 不检查文件是否真有执行权限,也不管 PATH 设置
什么时候该用它?
适合运维巡检、确认某个标准命令是否完整安装(含二进制+man页),或者批量核对系统命令部署情况。日常找“我现在敲 ls 实际跑的是哪个文件”,应该用:
-
command -v ls(POSIX 兼容,最推荐) -
which ls(简单看 PATH 中第一个) -
type ls(显示是 alias、builtin 还是文件)


















