如何将/ etc / profile中声明的环境变量用于通过monit运行的脚本?

时间:2014-01-29 10:54:24

标签: shell rhel monit

在/ etc / profile中声明的环境变量:

export MYNAME=rhel

从monit运行的脚本内容是[/tmp/printmyname.sh]:

echo "My Name is: "$MYNAME >> /var/log/env_variablefile.out

monit的内容:

check file PrintVariable with path /var/log/something.out
   start program = "/bin/sh /tmp/printmyname.sh"
   if timestamp > 1 minutes then start

我希望在/etc/profile文件自一分钟后未更新时,将/var/log/env_variablefile.out中声明的环境变量打印到/var/log/something.out

所以我的问题是,当我直接运行/tmp/printmyname.sh时,它会将My Name is: rhel追加到/var/log/env_variablefile.out,但当它从monit运行时,它只打印My Name is:

所以我想知道这种行为的原因以及解决问题的方法。

注意:monit每10秒运行一次,上面的代码只是我实际代码的一个例子。

1 个答案:

答案 0 :(得分:1)

/etc/profile仅针对交互式shell执行。

解决此问题的一种方法是将其添加到/tmp/printmyname.sh的开头:

. /etc/profile

请注意,这可能会导致问题,因为/etc/profile会尝试设置交互式环境,因此会调用许多您可能不需要的安装脚本。

更好的解决方案可能是将此变量放入新的全局脚本中,并从/etc/profile/tmp/printmyname.sh

中获取此新脚本

相关文章: