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 an meinem Computer anmelde. Ich habe kein Problem beim Ausführen, wenn ich bereits angemeldet bin, aber ich möchte, dass dies automatisch ausgeführt wird.
Die Leute sagen, sie sollen der Login-Shell-Datei hinzugefügt werden, aber ich weiß nicht, wo das ist. Bitte etwas Hilfe.
Antworten:
Folge dies:
Automator.app
Application
Show library
in die Symbolleiste (falls ausgeblendet).Run shell script
(aus demActions/Utilities
)irgendwo speichern (zum Beispiel können Sie einen
Applications
Ordner in Ihrem HOME erstellen, Sie erhalten einenyour_name.app
)gehe zu
System Preferences
->Accounts
->Login items
BEARBEITEN:
Ich habe kürzlich ein "Gute Antwort" -Abzeichen für diese Antwort erhalten. Während meine Lösung einfach ist und funktioniert, ist die sauberste Methode zum Ausführen eines Programms oder Shell-Skripts zur Anmeldezeit in der Antwort von @ trisweb beschrieben , es sei denn, Sie möchten Interaktivität .
Mit der Automator-Lösung können Sie folgende Aufgaben ausführen:
Fragen Sie nach einem Skript oder beenden Sie die App, fragen Sie nach Kennwörtern, führen Sie andere Automator-Workflows zur Anmeldezeit aus, führen Sie Anwendungen bedingt zur Anmeldezeit aus und so weiter ...
quelle
tl; dr: Verwenden Sie den nativen Prozessstarter und -manager von OSX
launchd
.Erstellen Sie dazu einen
launchctl
Daemon. Sie haben die volle Kontrolle über alle Aspekte des Skripts. Sie können einmal ausführen oder als Daemon am Leben bleiben. In den meisten Fällen ist dies der richtige Weg..plist
Datei gemäß den Anweisungen in den Apple Dev-Dokumenten hier oder genauer unten.~/Library/LaunchAgents
launchctl load [filename.plist]
)Für mehr auf
launchd
, der Wikipedia - Artikel ist recht gut und beschreibt das System und seine Vorteile gegenüber anderen älteren Systemen.Hier ist die spezifische plist-Datei, mit der beim Anmelden ein Skript ausgeführt werden kann .
Ersetzen Sie die
<string>
Taste nach dem Programm durch den gewünschten Befehl (beachten Sie, dass jedes Skript, auf das dieser Befehl verweist, ausführbar sein muss,chmod a+x /path/to/executable/script.sh
um sicherzustellen, dass es für alle Benutzer gilt).Speichern als
~/Library/LaunchAgents/com.user.loginscript.plist
Lauf
launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
und abmelden / anmelden, um zu testen (oder direkt testen, ausführenlaunchctl start com.user.loginscript
)Schwanz
/var/log/system.log
für Fehlermeldungen.Der Schlüssel ist, dass dies ein benutzerspezifischer Starteintrag ist, der bei der Anmeldung für den angegebenen Benutzer ausgeführt wird. Systemspezifische Startdämonen (platziert 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 meiner Meinung nach Ihre einzige Option, und das ist wahrscheinlich der Grund, warum es existiert.
quelle
launchctl
in den meisten Fällen ist sie einfach weitaus besser und gibt Ihnen mehr Kontrolle über alle möglichen Aspekte der Ausführung Ihres Skripts. Es ist eher im Sinne von "Warum eine weniger leistungsfähige Methode verwenden, wenn Launchd existiert?" (Hinweis: Ich habe den ersten Satz geändert, um anzuzeigen, dass ich diese für diese Situation persönlich nicht empfehle.)Erstellen Sie Ihr Shell-Skript wie
login.sh
in Ihrem $ HOME-Ordner.Fügen Sie das folgende einzeilige Skript in den Skript-Editor ein:
Shell-Skript "$ HOME / login.sh" ausführen
Speichern Sie es dann als Anwendung.
Fügen Sie schließlich die Anwendung zu Ihren Anmeldeelementen hinzu.
Wenn Sie die Skriptausgabe visuell gestalten möchten, können Sie Schritt 2 dafür austauschen:
Wenn mehrere Befehle benötigt werden, kann Folgendes verwendet werden:
quelle
Go to System Preferences -> Accounts -> Login items
und aktiviere das Kontrollkästchen für diese Anwendung.~/Library/LaunchAgents
Ordner überprüft ?