Je me demande si quelqu'un peut m'aider à exécuter un fichier .sh lorsque je me connecte à mon compte sur mon ordinateur. J'utilise Mac OS X 10.6.7.
J'ai un fichier "Example.sh" que je veux exécuter lorsque je me connecte à mon ordinateur. Je n'ai aucun problème à l'exécuter lorsque je suis déjà connecté, mais je veux que cela s'exécute automatiquement.
Les gens disent de l'ajouter au fichier shell de connexion, mais je ne sais pas où c'est. Un peu d'aide s'il vous plaît.
Réponses:
Suivez ceci:
Automator.app
Application
Show library
dans la barre d'outils (si masqué)Run shell script
(à partir duActions/Utilities
)enregistrer quelque part (par exemple, vous pouvez créer un
Applications
dossier dans votre HOME, vous obtiendrez unyour_name.app
)allez à
System Preferences
->Accounts
->Login items
ÉDITER:
J'ai récemment obtenu un badge "Bonne réponse" pour cette réponse. Bien que ma solution soit simple et fonctionne, la manière la plus propre d'exécuter n'importe quel programme ou script shell au moment de la connexion est décrite dans la réponse de @ trisweb , sauf si vous voulez l'interactivité .
Avec la solution d'automatisation, vous pouvez faire des choses comme la suivante:
donc, demander à exécuter un script ou quitter l'application, demander des mots de passe, exécuter d'autres workflows d'automate au moment de la connexion, exécuter conditionnellement des applications au moment de la connexion et ainsi de suite ...
la source
tl; dr: utiliser le lanceur de processus natif de Mac OS X et directeur,
launchd
.Pour ce faire, créez un
launchctl
démon. Vous aurez un contrôle total sur tous les aspects du script. Vous pouvez exécuter une fois ou rester en vie en tant que démon. Dans la plupart des cas, c'est la voie à suivre..plist
fichier selon les instructions des documents Apple Dev ici ou plus en détail ci-dessous.~/Library/LaunchAgents
launchctl load [filename.plist]
)Pour en savoir plus
launchd
, l'article de wikipedia est assez bon et décrit le système et ses avantages par rapport à d'autres systèmes plus anciens.Voici le fichier plist spécifique pour exécuter un script lors de la connexion .
Remplacez la
<string>
clé de programme par la commande souhaitée (notez que tout script référencé par cette commande doit être exécutable:chmod a+x /path/to/executable/script.sh
pour garantir qu'il s'adresse à tous les utilisateurs).Enregistrer sous
~/Library/LaunchAgents/com.user.loginscript.plist
Exécuter
launchctl load ~/Library/LaunchAgents/com.user.loginscript.plist
et se déconnecter / se connecter pour tester (ou pour tester directement, exécuterlaunchctl start com.user.loginscript
)Queue
/var/log/system.log
pour les messages d'erreur.La clé est qu'il s'agit d'une entrée launchd spécifique à l'utilisateur, elle sera donc exécutée lors de la connexion pour l'utilisateur donné. Les démons de lancement spécifiques au système (placés dans
/Library/LaunchDaemons
) sont exécutés au démarrage.Si vous souhaitez qu'un script s'exécute à la connexion pour tous les utilisateurs, je pense que LoginHook est votre seule option, et c'est probablement la raison pour laquelle il existe.
la source
launchctl
est tout simplement bien meilleure dans la plupart des cas et vous donne plus de contrôle sur tous les aspects possibles de l'exécution de votre script. C'est plus dans le sens de "pourquoi utiliser une méthode moins performante lorsque launchd existe?" (Notez que j'ai modifié la première phrase pour indiquer que personnellement je ne les recommande pas dans cette situation).Créez votre script shell comme
login.sh
dans votre dossier $ HOME.Collez le script d'une ligne suivant dans l'éditeur de script:
faire le script shell "$ HOME / login.sh"
Enregistrez-le ensuite en tant qu'application.
Enfin, ajoutez l'application à vos éléments de connexion.
Si vous souhaitez rendre la sortie du script visuelle, vous pouvez permuter l'étape 2 pour cela:
Si plusieurs commandes sont nécessaires, quelque chose comme ceci peut être utilisé:
la source
Go to System Preferences -> Accounts -> Login items
et cocher la case pour cette application.~/Library/LaunchAgents
dossier?