15 votes

Quel est le répertoire de travail par défaut d'un script exécuté via launchd ?

Je m'attendais à ce que ce soit facile à trouver sur Google, mais je n'ai rien trouvé.

Je sais que le répertoire de travail d'un agent/démon launchd peut être modifié via la commande workingdirectory clé. Toutefois, cette clé est facultative. Si aucun répertoire de travail n'est spécifié, qu'utilise MacOS ?

24voto

user3439894 Points 52496

TL;DR

La valeur par défaut est / , comme dans

<key>WorkingDirectory</key>
<string>/</string>

Explication

El WorkingDirectory dans un lancé sur le marché .plist est un élément facultatif clé utilisé pour spécifier un répertoire dans lequel chdir(2) doit être placé avant de lancer le travail. Si cette clé n'est pas présent, alors le Racine / est utilisé.

J'ai vérifié cela en lançant un shell script comme agent de lancement et comme démon de lancement qui, lorsqu'il est exécuté, ajoute une liste de répertoires à un fichier texte. Dans tous les cas, sans l'option WorkingDirectory clé le résultat est le suivant Racine / du répertoire disque de démarrage .

Selon qu'il a été exécuté ou non en tant que Racine ou le utilisateur actuel la sortie comme Racine contenait également les répertoires cachés, même si cela n'a pas été explicitement défini en sortie par le script.

À titre d'information, le PATH transmis à la shell script lorsqu'il est exécuté à la fois en tant qu'agent de lancement et en tant que démon de lancement :

/usr/bin:/bin:/usr/sbin:/sbin

Notez que ce test a été effectué sous OS X 10.8.5.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X