2017-03-07 103 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