在 OS X 中使用 launchd 終止並重新啟動 Finder

在 OS X 中使用 launchd 終止並重新啟動 Finder

我正在嘗試在登入時使用啟動代理來終止 Finder,然後重新啟動總查找器,自動套用 OS X 10.7 的 colorsidebar mod(該 mod 可以在這裡)。

如果我使用 launchagent 呼叫 shell 腳本,就可以了,如下所示:

<?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>

然後在shell腳本中,我使用的是

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

killall Finder
Open /Applications/TotalFinder.app

現在,當我嘗試將兩者結合時

<?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>

它不起作用,控制台顯示以下錯誤:

2011 年 8 月 21 日 5:16:16.957 PM com.colorsidebar.root: /bin/bash: Killall Finder: 沒有這樣的檔案或目錄

答案1

bash期望給予一個檔案名稱(即腳本)作為其參數。由於沒有名為“killall Finder”的文件,因此您會收到一條錯誤訊息。如果要將命令作為參數傳遞給 bash,則必須使用該-c選項,並將命令作為單一參數傳遞:

<key>ProgramArguments</key>
<array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>killall Finder; open /Applications/TotalFinder.app</string>
</array>

相關內容