2017-03-07 102 views
0

我需要在我的Centos/7机器上设置OS环境变量。厨师:设置环境变量

我使用我variables.rb文件试了一下:

host = 'locahost' 
port = 9201 

ENV['LV_ES_HOST'] = host 
ENV['LV_ES_PORT'] = '#{port}' 

然而,在外壳:

$ echo $LV_ES_HOST 

$ 
  1. 我怎么能设置一个操作系统环境变量?
  2. 是否可以设置一个操作系统环境变量只对用户可见?

我必须为了我的JEE应用的操作系统可用的环境变量能够阅读它的价值。

我在我的机器上运行了几个jee容器,并且应用程序正在运行需要获取LC_ES_HOST环境变量。

+4

可能重复[如何使用Chef食谱来设置环境变量?](http://stackoverflow.com/questions/6284517/how-can-you-use-a-chef-recipe-to- set-an-environment-variable) – Tensibai

+0

用户环境变量如何?我记得我能够设置一个用户可用的环境变量...... – Jordi

+0

那么你的问题开始于OS env var。但它们也可供每个用户使用。如果你的需要是启动一个守护进程,那么还有其他的方法,但这通常取决于目标应用程序。 – Tensibai

回答

1

另一个问题并没有真正解释潜在的问题。在fork()期间,Unix环境变量从父进程继承到子进程。因此,当您通过您的Chef代码中的ENV进行设置时,它确实会影响Chef下的子流程,如通过execute资源运行的子流程。但是,通过SSH登录时,您的shell不是chef-client的子进程,因此这些变量不可见。不幸的是,Unix没有针对全局环境变量的通用解决方案,因此您需要从其他问题中列出的许多妥协中选择一种。

+0

用户环境变量呢?我记得我可以设置用户可以使用哪些环境变量...... – Jordi

+0

您必须在其主目录中为该用户设置shell init脚本中的每个用户变量。 – coderanger

+0

是的,我的意思是。不过,它能够使用厨师吗? – Jordi