LaunchDaemons和Environment Variables

时间:2010-02-03 20:43:25

标签: macos osx-snow-leopard environment-variables startup

有一段时间了,我一直注意到我的MacPorts安装的Apache2实例在我启动时没有启动(MacPorts Apache2 Stopped Launching on Boot)。 LaunchDaemon已加载。今天我在日志文件中遇到了一些可能指向答案的内容,但我找不到任何确认。

我在httpd.conf文件中使用环境变量。具体来说,${HOME}变量。执行LaunchDaemons时是否可能(或可能等)环境变量被完全加载?我可以将它们添加到plist文件中,但我希望有人可以为我提供一个体面的,高级别的OS X启动过程,并确认我认为我所看到的。

感谢。

1 个答案:

答案 0 :(得分:0)

我在MacOSX上找到this page about the Boot Process,其中包含一些信息。基本上,launchd已启动并以root身份运行。然后,launchd基于plist文件启动每个守护进程。

关于守护程序启动期间的环境,我没有找到一点显式信息。但在阅读launchctl人之后,我找到了一个可以打印出launchd环境的命令。所以诀窍是去root并问:

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

我推断打印环境是守护进程启动时使用的环境。如果在不转到root的情况下重复操作,则环境必须与用户的环境匹配。