听起来脚本内部存在某种环境依赖性- 本质上,它假设正在运行的环境与您手动运行有关,但在启动时却没有。在不了解脚本的情况下,很难指出这可能是什么,但是我可以建议您看几件事:
当您launchctl
以普通用户身份运行时(例如launchctl load
),它与您的launchd用户实例进行交互以管理启动代理- 在您的用户会话中以您的用户身份运行的项目。
当您launchctl
以root身份运行时(例如sudo launchctl load
),它与launchd的系统实例进行交互以管理Launch Daemons-以root身份在系统上下文中运行的项目。
您必须根据此脚本的工作来决定哪个合适。
检查system.log(可以使用Console实用程序进行查看tail -f /var/log/system.log
),或者查看它是否包含任何指示脚本失败的原因。
将条目添加到启动的.plist中以记录脚本的输出,并查看其中是否包含任何错误消息或其他指示错误的信息:
<key>StandardOutPath</key>