我需要在我的 Centos/7 机器上设置操作系统环境变量。
我已经在我的 variables.rb
文件上尝试过使用它:
host = 'locahost'
port = 9201
ENV['LV_ES_HOST'] = host
ENV['LV_ES_PORT'] = '#{port}'
尽管如此,在 shell 上:
$ echo $LV_ES_HOST
$
- 如何设置操作系统环境变量?
- 是否可以设置仅对用户可见的操作系统环境变量?
我需要一个操作系统可用的环境变量,以便我的 jee 应用程序能够读取其值。
我在我的计算机上运行多个 jee 容器,并且应用程序运行时需要获取 LC_ES_HOST 环境变量。
最佳答案
另一个问题并没有真正解释根本问题。 Unix 环境变量在 fork()
期间从父进程继承到子进程。因此,当您在 Chef 代码中通过 ENV
设置内容时,它确实会影响 Chef 下的子进程,就像通过 execute
资源运行的内容一样。但是,当您通过 SSH 登录时,您的 shell 不是 chef-client
的子进程,因此这些变量不可见。不幸的是,Unix 没有针对全局环境变量的通用解决方案,因此您需要选择众多折衷方案之一,这些折衷方案已在另一个问题中列出。
关于chef-infra - Chef : Setting environment variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42645178/