Usando o launchd para matar e reiniciar o Finder no OS X

4

Estou tentando usar um launchagent no login para eliminar o Finder e, em seguida, reinicie o TotalFinder para aplicar automaticamente o mod colorsidebar para o OS X 10.7 (o mod pode ser encontrado aqui ).

Se eu usar o launchagent para chamar um script de shell, tudo bem, assim:

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

E, no script de shell, tudo que eu uso é

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

killall Finder
Open /Applications/TotalFinder.app

Agora, quando tento combinar os dois assim

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

Ele não funciona e o console mostra o seguinte erro:

8/21/11 5:16:16.957 PM com.colorsidebar.root: /bin/bash: killall Finder: No such file or directory

    
por Jocelyn 22.08.2011 / 06:46

1 resposta

3

bash espera receber um nome de arquivo (ou seja, um script) como seu argumento. Como não há nenhum arquivo chamado "killall Finder", você recebe um erro nesse sentido. Se você quiser passar comandos para bash como argumentos, você deve usar a opção -c e passar os comandos como um único argumento:

<key>ProgramArguments</key>
<array>
    <string>/bin/bash</string>
    <string>-c</string>
    <string>killall Finder; open /Applications/TotalFinder.app</string>
</array>
    
por 22.08.2011 / 07:11