web-dev-qa-db-ja.com

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

2
jan

問題が解決しました。

スクリプトをplist経由で実行する場合、(何らかの理由で)fswatchへの絶対パスが必要なようです。この場合 /usr/local/bin/fswatchターミナルfswatchから実行しても問題ありませんが、この場合は問題ありません。

1
jan