Sử dụng launchd để giết và khởi động lại Finder trong OS X


4

Tôi đang cố gắng sử dụng một launchagent trên đăng nhập để giết Finder, và sau đó lại được tung ra TotalFinder , để tự động áp dụng các mod colorsidebar cho OS X 10.7 (mod có thể tìm thấy ở đây ).

Nếu tôi sử dụng launchagent để gọi một kịch bản shell, thì cũng tốt, như vậy:

<?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.colorsidebar.root</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/POSIX/path/to/some/shell/script.sh</string>
    </array>
</dict>
</plist>

Và trong kịch bản shell, tất cả những gì tôi sử dụng là

#!/bin/bash
#
#This file kills the finder on user session start
#and re-launches TotalFinder
#

killall Finder
Open /Applications/TotalFinder.app

Bây giờ, khi tôi cố gắng kết hợp cả hai như vậy

<?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.colorsidebar.root</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/bash</string>
        <string>killall Finder</string>
        <string>open /Applications/TotalFinder.app</string>
    </array>
</dict>
</plist>

Nó không hoạt động và bảng điều khiển hiển thị lỗi sau:

8/21/11 5: 16: 16.957 PM com.colorsidebar.root: / bin / bash: killall Finder: Không có tệp hoặc thư mục như vậy

Câu trả lời:


3

bashdự kiến ​​sẽ được cung cấp một tên tệp (tức là một tập lệnh) làm đối số của nó. Vì không có tệp có tên "killall Finder", bạn sẽ gặp lỗi với hiệu ứng đó. Nếu bạn muốn truyền các lệnh để bash làm đối số, bạn phải sử dụng -ctùy chọn và truyền các lệnh dưới dạng một đối số:

<key>ProgramArguments</key>
<array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>killall Finder; open /Applications/TotalFinder.app</string>
</array>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.