linux - 如何在 Chef 中设置 java home

标签 linux chef-infra

我在 chef 中有以下代码,我想在其中设置 JAVA_HOME 但前提是它尚未设置。当我运行下面的命令时,它说它运行成功但没有设置 java_home。如果我手动运行,java_home 命令设置正确。

即使我删除了 not 如果它运行没有错误但没有设置 JAVA_HOME

bash 'set_JAVA_HOME' do
  code <<-EOH
    JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
    only_if code
    <<-EOH 'echo $JAVA_HOME' ==0
EOH
end

最佳答案

环境变量只能单向工作,当进程 fork 时,它们会从父进程发送到子进程,反之则不行。此代码实际上是空操作。在 Chef 的环境 ENV['JAVA_HOME'] = ... 中设置变量或对特定资源使用 environment 属性。

关于linux - 如何在 Chef 中设置 java home,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38900041/

相关文章:

ruby - block 看不到方法( Chef 资源)

mysql - Chef Recipe 将值添加到 mysql 表

chef-infra - Vagrant::Butcher "sudo: no tty present and no askpass program specified"尝试 "cat/etc/chef/client.pem"时

c++ - 将日期、时间和 UTC 偏移值转换为自 unix 纪元以来的毫秒数?

linux - if条件在linux shell脚本中的实现

linux - 使用 GETREGS 时,ptrace 是只获取用户空间堆栈 RSP,还是内核和用户空间 RSP 都可以?

linux - IPython 笔记本显示 `ImportError`

python - 为特定的 python 版本安装 pip

mysql - chef_gem 的依赖项

amazon-ec2 - 使用 Knife 部署 EC2 实例时遇到某种身份验证问题