4

Я пытаюсь использовать запускающий агент при входе в систему, чтобы убить Finder, а затем перезапустить TotalFinder, чтобы автоматически применить мод colorsidebar для OS X 10.7 (мод можно найти здесь).

Если я использую запускающий агент для вызова сценария оболочки, это нормально, вот так:

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

А затем в сценарии оболочки все, что я использую, это

#!/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>

Это не работает, и консоль показывает следующую ошибку:

21.08.11 17:16: 16.957 PM com.colorsidebar.root: /bin /bash: killall Искатель: нет такого файла или каталога

1 ответ1

3

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>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .