Запуск скрипта при входе в систему mac [закрыто]
Мне интересно, может ли кто-нибудь помочь мне с получением файла .sh для запуска при входе в мою учетную запись на моем компьютере. Я использую Mac OS X 10.6.7.
У меня есть файл "Example.sh" что я хочу запустить, когда я войду в свой компьютер. У меня нет проблем с его запуском, когда я уже вошел в систему, но я хочу, чтобы это запускалось автоматически.
люди говорят, чтобы добавить его в файл login Shell, но я не знаю, где это. Помогите, пожалуйста.
3 ответа:
Вы можете:
- запуск автомата.приложение
- Выберите "Приложения"
- нажмите кнопку "Показать библиотеку" на панели инструментов (если скрыто)
- добавить "запустить скрипт оболочки" (из действий/утилит)
- скопируйте и вставьте свой скрипт в окно
tl; dr: используйте собственный процесс запуска и менеджер OSX,
launchd
.чтобы сделать это, сделайте
launchctl
демон. Вы будете иметь полный контроль над всеми аспектами сценария. Вы можете запустить один раз или сохранить жизнь как демон. В большинстве случаев именно так и надо поступать.
- создать
.plist
файл в соответствии с инструкции в документах Apple Dev здесь или более подробно ниже.- место
~/Library/LaunchAgents
- Войти (или запустить вручную через
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-это ваш единственный вариант, и это, вероятно, причина его существования.
создайте свой сценарий оболочки как
login.sh
в папке $HOME.вставьте следующий однострочный скрипт в редактор скриптов:
do shell script "$HOME/login.sh"
затем сохраните его как приложение.
наконец, добавьте приложение к вашим элементам входа.
если вы хотите сделать вывод скрипта визуальным, вы можете поменять Шаг 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