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.

Author: Vertexwahn, 2011-06-22

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 zamiast your_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: automatyczny zrzut ekranu aplikacja logowania

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...

 271
Author: jm666,
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.

  1. Utwórz plik .plist zgodnie z instrukcjami w dokumentacji Apple Dev tutaj lub bardziej szczegółowo poniżej.
  2. miejsce w ~/Library/LaunchAgents
  3. 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.

 310
Author: trisweb,
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
  1. Utwórz skrypt powłoki jako login.sh w folderze $HOME.

  2. Wklej następujący skrypt jednowierszowy do Edytora Skryptów:

    Do shell script "$HOME/login.sh "

  3. Następnie zapisz go jako aplikację.

  4. 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
 35
Author: anubhava,
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