将命令添加至/usr/local/bin后zsh提示command not found如何解决
解决方案
1. 优先清空zsh命令缓存
zsh默认会缓存PATH路径下的可执行文件索引,新增文件后缓存未更新会触发找不到的报错,执行以下命令清空缓存后重试即可:
hash -r
执行完成后再运行vrlsubmit测试是否正常。
2. 验证二进制本身可用性
如果清空缓存后仍报错,先通过绝对路径直接调用程序,排除路径匹配问题:
/usr/local/bin/vrlsubmit
- 若绝对路径可正常运行:确认是缓存问题,后续新增大批量可执行文件后也可以执行
rehash命令手动刷新zsh的路径索引 - 若绝对路径仍然报错:按以下方向排查:
- 检查文件是否为当前系统架构兼容的二进制,或脚本文件的首行shebang指向的解释器是否存在:如果是脚本文件可以执行
head -n1 /usr/local/bin/vrlsubmit查看首行解释器路径,确认对应解释器已正确安装 - 检查文件名是否存在不可见字符:执行
ls /usr/local/bin | grep vrl | cat -A,如果输出的vrlsubmit后面带有@、^M等特殊字符,说明文件名存在多余不可见字符,需要重命名文件为正确的vrlsubmit
- 检查文件是否为当前系统架构兼容的二进制,或脚本文件的首行shebang指向的解释器是否存在:如果是脚本文件可以执行
3. 排查冲突配置
执行以下命令检查是否存在同名别名、函数覆盖了命令调用:
type vrlsubmit which -a vrlsubmit
如果输出显示为别名或函数,需要修改对应zsh配置文件(.zshrc等)删除冲突配置后,执行source ~/.zshrc生效。
内容的提问来源于stack exchange,提问作者Sunny Sun SW-TEGRA CN
相关产品推荐
相关产品推荐

