Một lựa chọn sẽ là chỉ sử dụng launchd. Lưu một danh sách tài sản như thế này ~/Library/LaunchAgents/com.superuser.445907.plist
và tải nó bằng launchctl load ~/Library/LaunchAgents/com.superuser.445907.plist
hoặc bằng cách đăng xuất và đăng nhập lại.
<?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>Label</key>
<string>com.superuser.445907</string>
<key>Program</key>
<string>/Users/username/script</string> <!-- ~/ doesn't work -->
<key>WatchPaths</key>
<array>
<string>/Users/username/Folder/</string>
</array>
<key>ThrotteInterval</key>
<integer>0</integer> <!-- run at most every 0 seconds, by default 10 -->
</dict>
</plist>
Launchd chỉ đăng ký thay đổi các tệp khi chúng được lưu nguyên tử, hoặc bị xóa và được tạo lại mỗi khi chúng được lưu. Hầu hết các ứng dụng OS X thực hiện lưu nguyên tử theo mặc định, nhưng ví dụ TextMate và vim thì không. Thay đổi trong các thư mục con của các thư mục đã xem không được phát hiện.
launchctl unload $path && launchctl load $path
áp dụng thay đổi cho một plist.
Xem man launchd
và man launchd.plist
để biết thêm thông tin.