Linux中,如何区分Whereis和Which命令指向的是系统内置还是第三方命令路径?
- 内容介绍
- 文章标签
- 相关推荐
本文共计824个文字,预计阅读时间需要4分钟。
whereis 和 which 都能查找命令的路径,但它们的定位逻辑和结果含义不同。联合使用时,可以结合系统内置命令与第三方安装的程序。
whereis:看“完整生态”,识别是否为标准系统组件
whereis 不依赖 PATH,而是扫描预设目录(如 /bin、/usr/bin、/usr/sbin、/usr/share/man、/usr/src),返回二进制、手册页、源码三类路径。若某命令的二进制在 /bin 或 /usr/bin,且手册页在 /usr/share/man/man1/ 下,基本可判定为系统内置命令。
- 例如:whereis ls → 输出
ls: /bin/ls /usr/share/man/man1/ls.1.gz,路径规范、文档齐全,属典型系统命令 - 而 whereis node 若只返回
node: /usr/local/bin/node,无手册页和源码路径,大概率是手动编译或 nvm 安装的第三方程序 - 用 whereis -u * 可批量找出“不完整”的命令(缺 man 或 source),这些往往是非系统原生安装的
which:看“实际执行路径”,反映当前环境优先级
which 严格按 $PATH 顺序查找第一个匹配的可执行文件,结果直接决定你运行的是哪个版本。它不关心是否有手册页,也不搜索源码。
本文共计824个文字,预计阅读时间需要4分钟。
whereis 和 which 都能查找命令的路径,但它们的定位逻辑和结果含义不同。联合使用时,可以结合系统内置命令与第三方安装的程序。
whereis:看“完整生态”,识别是否为标准系统组件
whereis 不依赖 PATH,而是扫描预设目录(如 /bin、/usr/bin、/usr/sbin、/usr/share/man、/usr/src),返回二进制、手册页、源码三类路径。若某命令的二进制在 /bin 或 /usr/bin,且手册页在 /usr/share/man/man1/ 下,基本可判定为系统内置命令。
- 例如:whereis ls → 输出
ls: /bin/ls /usr/share/man/man1/ls.1.gz,路径规范、文档齐全,属典型系统命令 - 而 whereis node 若只返回
node: /usr/local/bin/node,无手册页和源码路径,大概率是手动编译或 nvm 安装的第三方程序 - 用 whereis -u * 可批量找出“不完整”的命令(缺 man 或 source),这些往往是非系统原生安装的
which:看“实际执行路径”,反映当前环境优先级
which 严格按 $PATH 顺序查找第一个匹配的可执行文件,结果直接决定你运行的是哪个版本。它不关心是否有手册页,也不搜索源码。

