Zastanawiam się, czy ktoś może mi pomóc w uruchomieniu pliku .sh, gdy loguję się na swoje konto na moim komputerze. Korzystam z systemu Mac OS X 10.6.7.
Mam plik „Example.sh”, który chcę uruchomić po zalogowaniu się na komputerze. Nie mam problemu z uruchomieniem go, gdy jestem już zalogowany, ale chcę, aby działało to automatycznie.
Ludzie mówią, aby dodać go do pliku powłoki logowania, ale nie wiem, gdzie to jest. Proszę o pomoc.
Odpowiedzi:
Obserwuj to:
Automator.app
Application
Show library
na pasku narzędzi (jeśli ukryty)Run shell script
(zActions/Utilities
)zapisz gdzieś (na przykład możesz zrobić
Applications
folder w swoim HOME, dostanieszyour_name.app
)przejdź do
System Preferences
->Accounts
->Login items
EDYTOWAĆ:
Niedawno zdobyłem znaczek „Dobra odpowiedź” dla tej odpowiedzi. Chociaż moje rozwiązanie jest proste i działa, najczystszy sposób na uruchomienie dowolnego programu lub skryptu powłoki podczas logowania opisano w odpowiedzi na @ trisweb , chyba że chcesz interaktywności .
Dzięki rozwiązaniu automatyzującemu możesz wykonywać następujące czynności:
więc, prosząc o uruchomienie skryptu lub zamknięcie aplikacji, pytając o hasła, uruchamiając inne przepływy pracy automatyzatora podczas logowania, warunkowo uruchamiaj aplikacje podczas logowania i tak dalej ...
źródło
tl; dr: rodzimy proces launcher i OSX za pomocą Menedżera,
launchd
.Aby to zrobić, stwórz
launchctl
demona. Będziesz mieć pełną kontrolę nad wszystkimi aspektami skryptu. Możesz uruchomić raz lub pozostać przy życiu jako demon. W większości przypadków jest to właściwy sposób..plist
plik zgodnie z instrukcjami zawartymi w dokumentach Apple Dev tutaj lub bardziej szczegółowo poniżej.~/Library/LaunchAgents
launchctl load [filename.plist]
)Aby uzyskać więcej informacji
launchd
, artykuł w Wikipedii jest dość dobry i opisuje system oraz jego zalety w stosunku do innych starszych systemów.Oto konkretny plik plist do uruchomienia skryptu podczas logowania .
Zastąp
<string>
klucz programu po żądanym poleceniem (zwróć uwagę, że każdy skrypt, do którego odwołuje się to polecenie, musi być wykonywalny:chmod a+x /path/to/executable/script.sh
aby zapewnić, że jest dostępny dla wszystkich użytkowników).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, uruchomićlaunchctl start com.user.loginscript
)Ogon
/var/log/system.log
dla komunikatów o błędach.Kluczem jest to, że jest to wpis uruchamiany specyficzny dla użytkownika, więc będzie uruchamiany przy logowaniu dla danego użytkownika. Demony uruchamiania specyficzne dla systemu (umieszczone w
/Library/LaunchDaemons
) są uruchamiane podczas rozruchu.Jeśli chcesz, aby skrypt działał przy logowaniu dla wszystkich użytkowników, uważam, że LoginHook jest twoją jedyną opcją i prawdopodobnie dlatego istnieje.
źródło
launchctl
w większości przypadków jest po prostu znacznie lepsza i daje większą kontrolę nad wszystkimi możliwymi aspektami uruchamiania skryptu. Chodzi raczej o to, „po co stosować mniej wydajną metodę, gdy istnieje uruchomienie?” (Uwaga: Zmieniłem pierwsze zdanie, aby wskazać, że osobiście nie polecam ich w tej sytuacji).Utwórz skrypt powłoki jak
login.sh
w folderze $ HOME.Wklej następujący skrypt jednowierszowy do edytora skryptów:
wykonaj skrypt powłoki „$ HOME / login.sh”
Następnie zapisz go jako aplikację.
Na koniec dodaj aplikację do swoich elementów logowania.
Jeśli chcesz, aby skrypt wyjściowy był wizualny, możesz zamienić krok 2 na to:
Jeśli potrzebnych jest wiele poleceń, można użyć czegoś takiego:
źródło
Go to System Preferences -> Accounts -> Login items
i zaznacz pole ukryj dla tej aplikacji.~/Library/LaunchAgents
folder?