it-swarm.com.de

Laufendes Skript auf Login-Mac

Ich frage mich, ob mir jemand helfen kann, eine .sh-Datei zum Laufen zu bringen, wenn ich mich bei meinem Konto auf meinem Computer anmelde. Ich verwende Mac OS X 10.6.7.

Ich habe eine Datei "Example.sh", die ich ausführen möchte, wenn ich mich auf meinem Computer anmelde. Ich habe kein Problem damit, es auszuführen, wenn ich bereits angemeldet bin, aber ich möchte, dass es automatisch ausgeführt wird.

Die Leute sagen, sie sollen der Login-Shell-Datei hinzugefügt werden, aber ich weiß nicht, wo das ist. Hilfe bitte.

239
MZimmerman6

Folge dies:

  • anfang Automator.app
  • wähle Application
  • klicken Show library in der Symbolleiste (falls ausgeblendet)
  • hinzufügen Run Shell script (von dem Actions/Utilities)
  • kopieren Sie Ihr Skript und fügen Sie es in das Fenster ein
  • probier es aus
  • irgendwo speichern (zum Beispiel können Sie einen Applications Ordner in Ihrem HOME erstellen, Sie erhalten einen your_name.app)

  • gehe zu System Preferences -> Accounts -> Login items

  • füge diese App hinzu
  • test & fertig;)

EDIT:

Ich habe vor kurzem ein "Gute Antwort" -Abzeichen für diese Antwort erhalten. Während meine Lösung einfach ist und funktioniert, wird die sauberste Möglichkeit, ein Programm oder ein Shell-Skript zum Zeitpunkt der Anmeldung auszuführen, in @ triswebs Antwort, beschrieben, sofern nicht , möchten Sie Interaktivität .

Mit der Automator-Lösung können Sie folgende Aufgaben ausführen: automator screenshot login application

fragen Sie nach einem Skript oder beenden Sie die App, fragen Sie nach Passwörtern, führen Sie andere Automator-Workflows zur Anmeldezeit aus, führen Sie Anwendungen zur Anmeldezeit unter bestimmten Bedingungen aus und so weiter ...

331
jm666

tl; dr: Verwenden Sie den systemeigenen OSX-Prozessstarter und -manager launchd.

Erstellen Sie dazu einen launchctl -Daemon. Sie haben die volle Kontrolle über alle Aspekte des Skripts. Sie können einmal ausgeführt werden oder als Daemon am Leben bleiben. In den meisten Fällen ist dies der richtige Weg.

  1. Erstellen Sie eine .plist - Datei gemäß den Anweisungen in den Apple Dev-Dokumenten hier oder weiteren Details unten.
  2. Platz in ~/Library/LaunchAgents
  3. Einloggen (oder manuell mit launchctl load [filename.plist] Ausführen)

Weitere Informationen zu launchd, der Wikipedia-Artikel sind recht gut und beschreiben das System und seine Vorteile gegenüber anderen älteren Systemen.


Hier ist die spezifische plist-Datei zum Ausführen eines Skripts bei der Anmeldung .

Aktualisiert am 25.09.2017 für OSX El Capitan und neuer (Dank an 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>

Ersetzen Sie den <string> Nach der Programmtaste durch den gewünschten Befehl.

Speichern als ~/Library/LaunchAgents/com.user.loginscript.plist

Führen Sie launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist Aus und loggen Sie sich zum Testen aus/ein (oder führen Sie launchctl start com.user.loginscript Aus, um direkt zu testen)

Geben Sie /var/log/system.log Für Fehlermeldungen ein.

Der Schlüssel ist, dass dies ein benutzerspezifischer Starteintrag ist, der bei der Anmeldung für den angegebenen Benutzer ausgeführt wird. Systemspezifische Start-Daemons (in /Library/LaunchDaemons) Werden beim Booten ausgeführt.

Wenn Sie möchten, dass ein Skript bei der Anmeldung für alle Benutzer ausgeführt wird, ist LoginHook Ihrer Meinung nach Ihre einzige Option, und das ist wahrscheinlich der Grund, warum es existiert.

348
trisweb
  1. Erstellen Sie Ihr Shell-Skript als login.sh in Ihrem $ HOME-Ordner.

  2. Fügen Sie das folgende einzeilige Skript in den Skript-Editor ein:

    shell-Skript "$ HOME/login.sh" ausführen

  3. Speichern Sie es dann als Anwendung.

  4. Fügen Sie die Anwendung schließlich zu Ihren Anmeldeelementen hinzu.

Wenn Sie die Skriptausgabe visualisieren möchten, können Sie Schritt 2 folgendermaßen austauschen:

tell application "Terminal"
  activate
  do script "$HOME/login.sh"
end tell

Wenn mehrere Befehle benötigt werden, kann Folgendes verwendet werden:

tell application "Terminal"
  activate
  do script "cd $HOME"
  do script "./login.sh" in window 1
end tell
36
anubhava