Uruchamianie skryptu po zalogowaniu mac [zamknięte]
Zastanawiam się, czy ktoś jest w stanie mi pomóc w uruchomieniu pliku .sh po zalogowaniu się na moje konto na moim komputerze. Używam Mac OS X 10.6.7.
Mam plik "Example.sh" które chcę uruchomić, gdy loguję się na moim komputerze. Nie mam problemu z uruchomieniem go, gdy jestem już zalogowany, ale chcę, aby działał automatycznie.
Ludzie mówią, aby dodać go do pliku powłoki logowania, ale nie wiem, gdzie to jest. Proszę o pomoc.
3 answers
Możesz:
- Uruchom Automator.app
- Wybierz "Aplikacja"
- Kliknij "Pokaż bibliotekę" na pasku narzędzi (jeśli jest ukryta)
- Dodaj "Uruchom skrypt powłoki" (z akcji/narzędzi)
- skopiuj i wklej skrypt do okna
- przetestuj to
-
Zapisz gdzieś, na przykład możesz utworzyć folder "Applications" w swoim domu (otrzymasz nazwę użytkownika.app)
Update: W przypadku najnowszego systemu macOS nazwa pliku
your_name.command
zamiastyour_name.app
-
Przejdź do Preferencji systemowych -> konta - > elementy logowania
- Dodaj tę aplikację
- test & done;)
EDIT:
ostatnio zdobyłem odznakę "dobra odpowiedź" za tę odpowiedź. Chociaż moje rozwiązanie jest proste i działa, najczystszy sposób uruchomienia dowolnego programu lub skryptu powłoki w czasie logowania jest opisany w @trisweb ' s answer, chyba, że chcesz interaktywności .
Dzięki rozwiązaniu automator możesz robić rzeczy like next:
Więc, prosząc o uruchomienie skryptu lub zamknąć aplikację, pytając hasła, uruchamiając inne przepływy pracy Automatora w czasie logowania, warunkowo uruchomić aplikacje w czasie logowania i tak dalej...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:44
TL;dr: użyj natywnego programu uruchamiającego i menedżera procesów OSX, launchd
.
Aby to zrobić, stwórz launchctl
demona. Będziesz miał pełną kontrolę nad wszystkimi aspektami skryptu. Możesz uruchomić raz lub utrzymać przy życiu jako demon. W większości przypadków jest to droga do zrobienia.
- Utwórz plik
.plist
zgodnie z instrukcjami w dokumentacji Apple Dev tutaj lub bardziej szczegółowo poniżej. - miejsce w
~/Library/LaunchAgents
- Zaloguj się (lub uruchom ręcznie przez
launchctl load [filename.plist]
)
Więcej na launchd
, artykuł w Wikipedii jest całkiem dobry i opisuje system i jego zalety w stosunku do innych starszych systemów.
Oto konkretny plik plist do uruchomienia skryptu przy logowaniu.
Zaktualizowano 2017/09/25 dla OSX El Capitan i nowszych (kredyt na 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>
Zastąp <string>
po kluczu programu żądanym poleceniem.
Zapisz jako ~/Library/LaunchAgents/com.user.loginscript.plist
Uruchom launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
i wyloguj się / zaloguj, aby przetestować (lub przetestować bezpośrednio, Uruchom launchctl start com.user.loginscript
)
Ogon {[11] } dla komunikatów o błędach.
Kluczem jest to, że jest to wpis launchd specyficzny dla użytkownika, więc będzie on uruchamiany po zalogowaniu dla danego użytkownika. Demony startowe specyficzne dla systemu (umieszczone w /Library/LaunchDaemons
) są uruchamiane podczas rozruchu.
Jeśli chcesz, aby skrypt działał po zalogowaniu dla wszystkich użytkowników, wierzę, że LoginHook jest jedyną opcją i prawdopodobnie dlatego istnieje.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-05 08:50:41
Utwórz skrypt powłoki jako
login.sh
w folderze $HOME.-
Wklej następujący skrypt jednowierszowy do Edytora Skryptów:
Do shell script "$HOME/login.sh "
Następnie zapisz go jako aplikację.
Na koniec dodaj aplikację do swoich pozycji logowania.
Jeśli chcesz, aby wynik skryptu był wizualny, możesz zamienić Krok 2 na ten:
tell application "Terminal"
activate
do script "$HOME/login.sh"
end tell
Jeśli potrzebne jest wiele poleceń, może to być użyte:
tell application "Terminal"
activate
do script "cd $HOME"
do script "./login.sh" in window 1
end tell
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-25 15:02:39