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

通过launchctl运行plist脚本时出现jq: command not found错误

解决launchctl启动脚本找不到jq的问题

问题根源

launchd(launchctl的底层服务)运行时的默认PATH环境变量不包含/usr/local/bin(brew安装软件的默认路径),而你手动执行脚本时用的是用户shell,PATH已经包含了这个目录,所以直接运行没问题,通过plist启动就找不到jq。

解决方案

方案1:使用jq的绝对路径

先在终端执行which jq,得到jq的绝对路径(比如/usr/local/bin/jq),然后修改脚本里所有jq的调用,替换成绝对路径:

JSON=$(echo '{}' | /usr/local/bin/jq --arg SONG "$SONG" --arg ARTIST "$ARTIST" --arg EMOJI "$EMOJI" '.profile.status_text=$ARTIST+" - "+$SONG | .profile.status_emoji=$EMOJI')

curl -X POST --data "$JSON" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json; charset=utf-8" --silent -o /dev/null https://slack.com/api/users.profile.set | /usr/local/bin/jq 'del(.profile)'

方案2:在plist中配置环境变量

在你的plist文件的<dict>节点里添加EnvironmentVariables配置,把/usr/local/bin加入PATH:

<key>EnvironmentVariables</key>
<dict>
    <key>PATH</key>
    <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>

修改后重新加载plist:

launchctl unload ~/Library/LaunchAgents/com.user.spotify-slack.plist
launchctl load ~/Library/LaunchAgents/com.user.spotify-slack.plist

方案3:在脚本开头设置PATH

在spotify-slack.sh的最顶部添加PATH配置:

export PATH="/usr/local/bin:$PATH"

这样脚本运行时会先把/usr/local/bin加入环境变量,就能找到jq了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 04:53:15