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.plistvà tải nó bằng launchctl load ~/Library/LaunchAgents/com.superuser.445907.plisthoặ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 launchdvà man launchd.plistđể biết thêm thông tin.