LaunchDaemons and Environment Variables

感情迁移 提交于 2019-12-20 03:42:28

问题


For a while now, I've been noticing that my MacPorts-installed Apache2 instance hasn't been starting when I start up (MacPorts Apache2 Stopped Launching on Boot). The LaunchDaemon is loaded. Today I bumped into something in a log file that may point to an answer, but I can't find any confirmation.

I use environment variables in my httpd.conf file. Specifically, the ${HOME} variable. Is it possible (or probable, etc.) that environmental variables are fully loaded when LaunchDaemons are executed? I can add them to the plist file, but I'm hoping someone can provide me with a decent, high level look into the boot process of OS X and confirm what I think I'm seeing.

Thanks.


回答1:


I found this page about the Boot Process on MacOSX, which contains some information. Basically, launchd is started and run as root. Every daemons is then started by launchd based on the plist file.

Regarding the environment during daemon start, I have not find a single bit of explicit information. But after reading the launchctl man, I found a command that can print out the environment of launchd. So the trick is to go root and ask:

#$> sudo su
Password:
#$> whoami
root
#$> launchctl
launchd% export
PATH="/usr/bin:/bin:/usr/sbin:/sbin"; export PATH;
launchd% exit
#$> exit

I infer that the print environment is the one used when daemons are started. If you repeat the operation without going root, the environment must match the user's one.



来源:https://stackoverflow.com/questions/2195298/launchdaemons-and-environment-variables

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!