无法通过 launchctl“未找到命令”加载脚本

无法通过 launchctl“未找到命令”加载脚本

我在加载脚本以通过 /Library/LaunchAgents 中的 fswatch 监视文件夹时遇到问题。从终端运行时,脚本运行良好,但通过我的 plist,它在日志中为 fswatch 提供“未找到命令”。
我敢打赌这与脚本的放置位置/是否指定路径有关,但我搞不清楚。它在这里:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Debug</key>
    <true/>  
    <key>Label</key>
    <string>org.papers.fswatch</string>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/papersfswatch.sh</string>
    </array>
    <key>RunAtLoad</key>
    <true/>    
    <key>StandardErrorPath</key>
    <string>/Users/x/Documents/Computer/Logs/papersfswatch.log</string>
    <key>StandardOutPath</key>
    <string>/Users/x/Documents/Computer/Logs/papersfswatch.log</string>
</dict>
</plist>

当我加载它时,sudo launchctl load /Library/LaunchAgents/org.papers.fswatch.plist它会给我一个服务仅运行 0 秒的警告,并且在日志中我得到

    /usr/local/bin/papersfswatch.sh: line 2: fswatch: command not found 

第 2 行当然是 fswatch 命令。如果从终端找到它,为什么找不到它,我该如何指向它。任何帮助都非常感谢!

J

答案1

问题解决了。

看来脚本fswatch在通过 plist 运行时需要绝对路径(无论出于什么原因)。在这种情况下,/usr/local/bin/fswatch 从终端运行fswatch可以正常工作,但在这种情况下不行。

相关内容