Le ci-dessus (actions Automator) et d'autres méthodes (LoginHook) ont des limites et, personnellement, je vous recommandons d'utiliser launchd
à la place.
Il suffit de faire une launchctl
démon. Vous aurez le contrôle total sur tous les aspects du script. Vous pouvez exécuter une seule fois ou de le garder vivant comme un démon. C'est vraiment la bonne façon de le faire dans la plupart des cas.
- Créer un
.plist
fichier selon les instructions dans le Dev Apple docs ici.
- Place dans
~/Library/LaunchAgents
- Connectez-vous (ou exécuter manuellement par l'intermédiaire de
launchctl load [filename.plist]
Poster parce que je souhaite que j'avais connu cela avant d'essayer les autres méthodes fiables. Launchctl est la bonne façon.
Pour en savoir plus sur launchd
, l'article de wikipedia est assez bonne et décrit le système et ses avantages par rapport à d'autres systèmes plus anciens.
Comme demandé, voici le spécifique fichier plist pour exécuter un script à l'ouverture de session.
<?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>Program</key>
<string>/path/to/executable/script.sh</string>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
Remplacer le après le Programme clé avec votre commande souhaitée.
Enregistrer en tant que ~/Library/LaunchAgents/com.user.loginscript.plist
Exécutez launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
et de se déconnecter/en de test (ou test directement, exécutez launchctl start com.user.loginscript
)
Queue /var/log/system.log
pour les messages d'erreur.
La clé, c'est que c'est spécifique à un Utilisateur launchd entrée, de sorte qu'il sera exécuté sur la connexion pour l'utilisateur donné. Système spécifique de lancer les démons (placé en /Library/LaunchAgents
) sont exécutés au démarrage.
Si vous souhaitez un script à exécuter lors de la connexion pour tous les utilisateurs, je crois LoginHook est votre seule option, et c'est probablement la raison pour laquelle elle existe.