3

我刚刚使用厨师食谱安装了 java,并为所有用户更新了 PATH 环境变量(将新文件添加到 /etc/profile.d/)。

是否可以告诉厨师重新加载 PATH 变量?

当我做这样的事情时:

execute "java_check" do
  command "java -version"
end

是说找不到java。

当我注销时它工作正常,再次登录然后运行厨师食谱。

4

3 回答 3

2

我不是 100% 确定您可以为将来的厨师运行更新 PATH 变量,但您可以使用该节中的environment属性手动设置它。execute这也可以用于其他资源。请参阅:http ://docs.opscode.com/chef/resources.html#execute

从厨师文档,

environment
A hash of environment variables: {"ENV_VARIABLE"=>"VALUE"}.
(These environment variables must exist for a command to execute successfully.)
Default value: nil.

Run a command which requires an environment variable

execute "slapadd" do
  command "slapadd < /tmp/something.ldif"
  creates "/var/lib/slapd/uid.bdb"
  action :run
  environment ({'HOME' => '/home/myhome'})
end
于 2013-07-02T06:02:27.157 回答
2

我发现无法永久更新 ENV 变量(在厨师完成后可用),但可以为当前厨师运行的未来命令更新变量。

ruby_block  "set-env-" do
  block { ENV[variable_name] = variable_value }
  not_if { ENV[variable_name] == variable_value }
end
于 2013-07-25T07:22:54.563 回答
0
execute "run_updated_bash" do
    command "bash /etc/profile.d/myscript.sh"
end

你有没有尝试过这样的事情?它可以在您将文件放入 /etc/profile.d/ 后运行

于 2013-06-27T01:32:48.647 回答