2013-01-01 6 views
6

mit einem seltsamen Problem hier auslösen. Ich habe ~/Library/Launchagents/com.me.helloworld.plist mit folgendem Inhalt:launchd: WatchPaths wird kein einfaches "Hallo Welt" -Skript (OS X 10.8)

<?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>Label</key> 
     <string>com.me.helloworld</string> 
     <key>ProgramArguments</key> 
     <array> 
       <string>/Users/me/temp/test.sh</string> 
     </array> 
     <key>WatchPaths</key> 
     <array> 
       <string>/Users/me/temp/Journal.txt</string> 
     </array> 
</dict> 
</plist> 

Die Idee ist, wenn ~/temp/Journal.txt geändert wird, sollte es ~/temp ausführen/Test .Sch. test.sh hat folgenden Inhalt:

#!/bin/bash 
echo "hello world from test.sh" >> itchanged.txt 

Also, wenn ich Journal.txt ändern, sollte ich eine Datei bekommen genannt itchanged.txt. Wenn ich folgendes mache:

Doing ein ls zeigt, dass test.txt nicht erstellt wird. Wenn ich jedoch manuell eine ./test.sh-Datei anlege, wird ituanged.txt erstellt. Das Problem scheint also darin zu liegen, zu erkennen, dass Journal.txt geändert wird und das Skript ausgeführt wird, wenn dies geschieht.

Ich benutze OS X Mountain Lion. Irgendwelche Ideen?

Antwort

7

Ihr Skript gibt keinen Pfad für itchanged.txt an; Da das Standardarbeitsverzeichnis für launchd-gestartete Prozesse/ist und Ihr Konto wahrscheinlich keine Berechtigungen zum Erstellen von Dateien hat, wird itchanged.txt niemals erstellt. Sie sollten entweder einen Pfad im Skript angeben oder den Schlüssel WorkingDirectory zu Ihrer .plist hinzufügen, um den Standardwert zu ändern.

+0

Das hat funktioniert! Vielen Dank, Gordon. – user1940620