Мне интересно, сможет ли кто-нибудь помочь мне с запуском файла .sh при входе в свою учетную запись на моем компьютере. Я использую Mac OS X 10.6.7.
У меня есть файл «Example.sh», который я хочу запустить при входе на компьютер. У меня нет проблем с его запуском, когда я уже вошел в систему, но я хочу, чтобы он запускался автоматически.
Люди говорят, чтобы добавить его в файл оболочки входа, но я не знаю, где это. Некоторая помощь, пожалуйста.
Ответы:
Следить за этим:
Automator.app
Application
Show library
на панели инструментов (если скрыто)Run shell script
(изActions/Utilities
)сохранить где-нибудь (например, вы можете сделать
Applications
папку в вашем доме, вы получитеyour_name.app
)перейти к
System Preferences
->Accounts
->Login items
РЕДАКТИРОВАТЬ:
Недавно я получил значок «Хороший ответ» для этого ответа. Хотя моё решение простое и работает, самый простой способ запуска любой программы или сценария оболочки во время входа в систему описан в ответе @ trisweb , если только вы не хотите интерактивности .
С помощью автоматического решения вы можете делать следующее:
Итак, запрос на запуск сценария или выход из приложения, запрос пароля, запуск других рабочих процессов автоматизатора во время входа в систему, условный запуск приложений во время входа в систему и так далее ...
источник
tl; dr: использовать встроенный в OSX модуль запуска и управления процессами
launchd
.Для этого создайте
launchctl
демон. Вы будете иметь полный контроль над всеми аспектами сценария. Вы можете запустить один раз или остаться в живых как демон. В большинстве случаев это путь..plist
файл в соответствии с инструкциями в документации Apple Dev здесь или более подробно ниже.~/Library/LaunchAgents
launchctl load [filename.plist]
)Более того
launchd
, статья в Википедии довольно хороша и описывает систему и ее преимущества перед другими старыми системами.Вот конкретный файл plist для запуска скрипта при входе в систему .
Замените
<string>
после ключа программы нужной вам командой (обратите внимание, что любой сценарий, на который ссылается эта команда, должен быть исполняемым:chmod a+x /path/to/executable/script.sh
это должно быть сделано для всех пользователей).Сохранить как
~/Library/LaunchAgents/com.user.loginscript.plist
Запустить
launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
и выйти / войти, чтобы проверить (или проверить напрямую, запуститьlaunchctl start com.user.loginscript
)Хвост
/var/log/system.log
для сообщений об ошибках.Ключевым моментом является то, что это запись запуска для конкретного пользователя, поэтому она будет выполняться при входе в систему для данного пользователя. Системные демоны запуска (помещенные в
/Library/LaunchDaemons
) запускаются при загрузке.Если вы хотите, чтобы сценарий запускался при входе в систему для всех пользователей, я полагаю, что LoginHook - ваш единственный вариант, и, вероятно, именно поэтому он существует.
источник
launchctl
в большинстве случаев он гораздо лучше и дает вам больше контроля над всеми возможными аспектами выполнения вашего скрипта. Это больше в смысле "зачем использовать менее способный метод, когда существует launchd?" (Обратите внимание, что я изменил первое предложение, чтобы указать, что лично я не рекомендую их для этой ситуации).Создайте свой скрипт оболочки как
login.sh
в вашей папке $ HOME.Вставьте следующий однострочный скрипт в редактор скриптов:
сделать скрипт оболочки "$ HOME / login.sh"
Затем сохраните его как приложение.
Наконец добавьте приложение в ваши элементы входа.
Если вы хотите сделать вывод скрипта визуальным, вы можете поменять местами шаг 2 для этого:
Если нужно несколько команд, можно использовать что-то вроде этого:
источник
Go to System Preferences -> Accounts -> Login items
и установите флажок скрытия для этого приложения.~/Library/LaunchAgents
папку?