1

我有一个 shell 脚本,它评估一个充满 JSON 文件的文件夹,直接调用时运行良好,但从 launchd 运行时失败。具体来说,launchd 在这一行失败:

current_file_snapshots=$(cat $current_file | jq '.snapshots | length')

因为:

jq: command not found

我查看了 jq 文档来解决这个问题,但没有提到这个问题。我一直无法弄清楚如何让 jq(或任何类似的第三方工具)通过 launchd 工作。

谢谢!

4

2 回答 2

4

啊,看起来我假设 launchd 与我的普通 bash shell 共享相同的路径。明确说明 JQ 生活的地方似乎有效:

所以在文件的顶部我添加了:

JQ=/usr/local/bin/jq

并将“jq”的所有实例替换为:

$JQ
于 2014-05-11T22:03:29.003 回答
1

作为在 Mac OS X 中运行的第一个进程,launchd除了PATH您在/etc/launchd.conf. 您可以创建该文件并添加

setenv PATH "/usr/local/bin"

如果您想要与常规 shell 会话关联的完整环境,则应显式执行脚本作为登录 shell:

bash -l myscript.bash
于 2014-05-12T12:07:57.763 回答