You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash使用source导入函数脚本是否会引发command not found报错?

问题排查结论与解决方案

你的source导入方式没有问题,出现jq command not found错误和脚本导入逻辑无关,属于命令可访问性的环境问题,可按以下方向逐一排查:

  • 确认jq是否已安装
    大多数Linux发行版、macOS默认不预装jq,先在当前执行脚本的终端执行which jq,如果无输出说明没有安装,可通过对应包管理器安装:
    • Debian/Ubuntu系:apt install jq
    • CentOS/RHEL系:yum install jq
    • macOS:brew install jq
  • 排查PATH环境变量异常
    如果确认jq已经安装,大概率是脚本运行时的PATH环境变量没有包含jq的安装路径:
    1. 可以在script2.sh的两个jq调用前都添加echo $PATH,对比两处输出的PATH是否一致,同时确认which jq返回的路径是否在PATH列表中
    2. 如果你遇到的是get函数内的第一次jq调用成功,dosomething内的第二次jq调用失败的情况,优先检查两次jq调用之间的代码是否修改了PATH变量,导致jq的安装路径被移除
  • 特殊执行上下文的适配
    如果你是通过crontab定时任务、sudo提权、服务托管等方式执行脚本,这类场景的默认PATH和普通交互终端的PATH不一致,即使你手动在终端能找到jq,脚本执行时也会报错,两种解决方案:
    1. 调用jq时直接写绝对路径,比如你用which jq查到路径是/usr/bin/jq,就把代码里的jq替换为/usr/bin/jq
    2. 在脚本开头强制指定完整的PATH,示例:export PATH=/usr/local/bin:/usr/bin:/bin:$PATH

你可以先在script1.sh的source ./script2.sh前添加which jq测试,如果这一步就报错,完全可以确认和script2的导入逻辑无关,直接按上面的环境问题排查即可。

内容的提问来源于stack exchange,提问作者Pedro Gonzalez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 21:15:07