我有一个shell脚本,用于评估一个充满JSON文件的文件夹,这些文件在直接调用时运行正常但在从launchd运行时失败。具体来说,launchd在这一行失败了:
current_file_snapshots=$(cat $current_file | jq '.snapshots | length')
由于:
jq: command not found
我查看了jq文档来解决这个问题,但没有提到这个问题。我无法弄清楚如何让jq(或任何类似的第三方工具)通过launchd工作。
谢谢!
答案 0 :(得分:4)
啊,看起来我认为launchd与我的普通bash shell共享相同的PATH。明确说明JQ生活的地方似乎有效:
所以在我添加的文件顶部:
JQ=/usr/local/bin/jq
并替换了' jq'的所有实例。用:
$JQ
答案 1 :(得分:1)
作为在Mac OS X中运行的第一个进程,launchd
没有环境(包括PATH
参数),除了您在/etc/launchd.conf
中指定的内容。您可以创建该文件并添加
setenv PATH "/usr/local/bin"
如果您想要与常规shell会话相关联的完整环境,则应该将您的脚本显式地作为登录shell执行:
bash -l myscript.bash