Запуск скрипта при входе в систему mac [закрыто]


Мне интересно, может ли кто-нибудь помочь мне с получением файла .sh для запуска при входе в мою учетную запись на моем компьютере. Я использую Mac OS X 10.6.7.

У меня есть файл "Example.sh" что я хочу запустить, когда я войду в свой компьютер. У меня нет проблем с его запуском, когда я уже вошел в систему, но я хочу, чтобы это запускалось автоматически.

люди говорят, чтобы добавить его в файл login Shell, но я не знаю, где это. Помогите, пожалуйста.

3 199

3 ответа:

Вы можете:

  • запуск автомата.приложение
  • Выберите "Приложения"
  • нажмите кнопку "Показать библиотеку" на панели инструментов (если скрыто)
  • добавить "запустить скрипт оболочки" (из действий/утилит)
  • скопируйте и вставьте свой скрипт в окно

tl; dr: используйте собственный процесс запуска и менеджер OSX,launchd.

чтобы сделать это, сделайте launchctl демон. Вы будете иметь полный контроль над всеми аспектами сценария. Вы можете запустить один раз или сохранить жизнь как демон. В большинстве случаев именно так и надо поступать.

  1. создать .plist файл в соответствии с инструкции в документах Apple Dev здесь или более подробно ниже.
  2. место ~/Library/LaunchAgents
  3. Войти (или запустить вручную через launchctl load [filename.plist])

подробнее о launchd,Википедия довольно хорошо и описывает систему и ее преимущества перед другими старыми системами.


вот конкретный файл plist для запуска скрипта при входе в систему.

Обновлено 2017/09/25 для OSX El Capitan и новее (кредит на José Messias Jr):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>com.user.loginscript</string>
   <key>ProgramArguments</key>
   <array><string>/path/to/executable/script.sh</string></array>
   <key>RunAtLoad</key>
   <true/>
</dict>
</plist>

заменить <string> после ключа программы с вашей желаемой командой.

Сохранить как ~/Library/LaunchAgents/com.user.loginscript.plist

выполнить launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist и выход / вход для тестирования (или для тестирования напрямую, запустите launchctl start com.user.loginscript)

хвост /var/log/system.log для сообщений об ошибках.

ключ в том, что это пользовательская запись launchd, поэтому она будет запущена при входе в систему для данного пользователя. Системные демоны запуска (помещенные в /Library/LaunchDaemons) запускаются при загрузке.

если вы хотите, чтобы скрипт запускался при входе для всех пользователей, я считаю, что LoginHook-это ваш единственный вариант, и это, вероятно, причина его существования.

  1. создайте свой сценарий оболочки как login.sh в папке $HOME.

  2. вставьте следующий однострочный скрипт в редактор скриптов:

    do shell script "$HOME/login.sh"

  3. затем сохраните его как приложение.

  4. наконец, добавьте приложение к вашим элементам входа.

если вы хотите сделать вывод скрипта визуальным, вы можете поменять Шаг 2 на это:

tell application "Terminal"
  activate
  do script "$HOME/login.sh"
end tell

если требуется несколько команд, можно использовать что-то вроде этого:

tell application "Terminal"
  activate
  do script "cd $HOME"
  do script "./login.sh" in window 1
end tell