FreeBSD中使用service命令传递环境变量时配置${name}_env启动报错,求解决
FreeBSD中使用service命令传递环境变量时配置${name}_env启动报错,求解决
嗨,我来帮你分析下这个问题~
你遇到的错误根源是对${name}_env的配置格式理解有偏差。根据rc.subr的说明,${name}_env是要传递给env(1)工具的参数,而env命令要求传入的是完整的环境变量键值对(也就是VAR=value的形式),不是只写变量名就行的。
你现在写的mydaemon_env="MYD_ROOT",env会把MYD_ROOT当成要执行的命令去查找,自然就会报“找不到文件或目录”的错误了。
正确的配置方式
你需要把环境变量的键和对应的值一起写进去,比如:
# 在/etc/rc.conf中配置 mydaemon_env="MYD_ROOT=/path/to/your/mydaemon/root"
如果需要同时设置多个环境变量,用空格分隔不同的键值对即可:
mydaemon_env="MYD_ROOT=/opt/mydaemon MYD_LOG_DIR=/var/log/mydaemon"
这样配置后,env工具就能正确识别这些是要传递的环境变量,而非要执行的命令,再执行service mydaemon onestart应该就能正常启动你的守护进程了。
备注:内容来源于stack exchange,提问作者Rahul Bharadwaj
相关产品推荐
相关产品推荐

