OS X で launchd plist ファイルを使用して実行したい bash スクリプトがあります。問題は、bash スクリプトに sudo コマンドが含まれており、実行が停止していることです。たとえば、私の bash スクリプトは次のようになります。
#!/bin/bash
sudo /opt/local/bin/bindfs -u user1 /Library/WebServer/Documents/user1 /vhosts/user1/public_html
sudo /opt/local/bin/bindfs -u user2 /Library/WebServer/Documents/user2 /vhosts/user2/public_html
私のcom.test.bindfs.plistファイルは次のようになります(Lingonで作成):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>GroupName</key>
<string>admin</string>
<key>Label</key>
<string>com.jamespayne.bindfs</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/bindfs.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
起動後にスクリプトを実行し、パスワードを入力してスクリプトが機能することを確認しましたが、起動時に実行されません。launchd plist は実行されていますが、次のエラーが表示されます。
sudo: tty が存在せず、askpass プログラムが指定されていません
これを機能させる方法や、なぜそのエラーが発生するのかを知っている人は誰でも。ありがとう。