простой способ сделать это - избавить всех ненужных вещей.
Что вы хотите сделать, это запустить скрипт Python при запуске. Вы не хотите видеть его в окне терминала или что-то еще, поэтому нет необходимости привлекать Terminal.app. Единственная причина, по которой у вас есть сценарий оболочки, - установить рабочий каталог, и есть лучшие способы сделать это. И, по-видимому, единственная причина, по которой вы перетащили AppleScript, была для Terminal.
Что вы хотите сделать, это запустить скрипт Python в качестве агента запуска. Документация Apple по этому поводу может быть немного запутанной для новичков, но есть несколько замечательных сообщений в блогах, например, this one by Nathan Grigg.
Идея заключается в том, что вы создаете файл plist (либо путем редактирования формата XML вручную, либо с помощью одного из редакторов plist, который поставляется с OS X и/или Xcode, или с помощью стороннего инструмента, такого как Lingon), который сообщает OS X «когда эти условия верны, запустите эту команду в этом рабочем каталоге». Затем вы помещаете этот файл в ~/Library/LaunchAgents. Затем вы скажете launchctl
, чтобы загрузить его. И вы сделали.
Ваш PLIST будет выглядеть примерно так:
<?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>org.user3159170.sickbeard</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/python</string>
<string>/Applications/Sick-Beard-development/sickbeard.py</string>
<string>-d</string>
</array>
<key>WorkingDirectory</key>
<string>/Applications/Sick-Beard-development/</string>
<key>RunAtLoad</key>
<true />
<key>LaunchOnlyOnce</key>
<true />
</dict>
</plist>
Эти настройки убедитесь, что OS X запускает программу при первой загрузке Launch агент, и снова первый раз, когда вы войти в систему после каждой последующей перезагрузки, и никакие другие времена, которые я думаю, это то, что вы хотите. Но man launchd.plist
предоставит вам подробную информацию обо всех вариантах (или, опять же, прочитайте связанное сообщение в блоге и найдите другие).
Сохраните это как ~/Library/LaunchAgents/org.user3159170.sickbeard.plist.
Теперь на терминале, сделайте следующее:
launchctl load ~/Library/LaunchAgents/org.user3159170.sickbeard.plist
Вы можете посмотреть на ваш console.log, чтобы посмотреть, что происходит. Вы можете попробовать запустить и остановить его вручную (man launchctl
объяснит, как, но в основном это просто launchctl start org.user3159170.sickbeard
). Запустите launchctl list
, чтобы убедиться, что он появился. Как только все работает, перезагрузите компьютер, войдите в систему и убедитесь, что он снова запущен. Если да, то все готово.
Есть ли причина, по которой вам нужно использовать AppleScript для запуска терминала для запуска сценария оболочки для запуска скрипта Python вместо, скажем, всего лишь запуска сценария Python? – abarnert
Нет, совсем нет, просто не уверен, как это сделать ... пока я могу запустить его в фоновом режиме – user3159170
Кроме того, действительно ли это должно быть _at startup_, или это может быть _at login_ для обычного пользователя Счет? – abarnert