核心结论
which、whereis、locate 与 find 回答的问题不同。which 主要沿当前环境的 PATH 查找同名可执行文件;whereis 根据系统预设目录寻找程序、手册和源码等相关文件;locate 查询预先建立的路径数据库,速度快但结果可能不是最新;find 从指定起点实时遍历目录树,可按名称、类型、权限、大小和修改时间等条件筛选,结果更接近当前文件系统状态,但遍历成本更高。正确选择的前提是先判断自己要确认命令解析结果、快速获得候选路径,还是执行精确的实时搜索。
底层机制
交互式外壳执行一个命令名时,可能依次考虑保留字、别名、函数、内建命令、已缓存的命令