Estou tentando usar um agente de inicialização no login para encerrar o Finder e, em seguida, reiniciarTotal Finder, para aplicar automaticamente o mod colorsidebar para OS X 10.7 (o mod pode ser encontradoaqui).
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 então, no shell script, 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>
Não funciona e o console mostra o seguinte erro:
21/08/11 17:16:16.957 PM com.colorsidebar.root: /bin/bash: killall Finder: Esse arquivo ou diretório não existe
Responder1
bash
espera receber um nome de arquivo (ou seja, um script) como argumento. Como não existe um arquivo chamado "killall Finder", você recebe um erro nesse sentido. Se você quiser passar comandos para o bash como argumentos, você deve usar a -c
opção 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>