使用厨师食谱更新.bashrc

its*_*sme 5 ruby chef-infra

我正在编写使用chef-solo安装jsk的练习方法,我需要更新.bashrc文件来设置JAVA_HOMEPATH变量.我不知道怎么做.任何人都可以告诉我该怎么做.我的一些代码是......

file "/home/user/.bashrc" do
    owner   "root"
    #something goes here.... i don't know what. but i write
    #%{bash -i -c "source /etc/bash/bashrc && bashrc update"}

    content "JAVA_HOME=/usr/java/jdk1.1.0.05"
    content "PATH=$PATH:JAVA_HOME/bin"

  end
Run Code Online (Sandbox Code Playgroud)

我不明白command%{bash -i -c"source/etc/bash/bashrc && bashrc update"}是什么意思.谢谢

Nil*_*ndt 5

首先,/etc/skel/是创建新用户时复制的目录。更改 bashrc 不会影响您现有的用户,因此您可能想更改其他文件?

其次,注释掉的命令启动一个新的 bash shell,并在该 shell 中提供源代码/etc/bash/bashrc(以重新加载它),然后执行bashrc update. 我不知道那是做什么的,它可能是你机器上的 shell 脚本?
为什么你想这么称呼?它甚至不引用您更改的文件。

第三,您调用content两次,这意味着该文件中只有第二行。

您可能想要做的是:

创建一个文件files/default/bashrc并将整个 bashrc (包括 Java 行)复制到其中。
将上面的代码替换为:

file "/home/whateveruseryouwant/.bashrc" do
  owner "whateveruseryouwant"
  group "whateveruseryouwant"
  source "bashrc"
end
Run Code Online (Sandbox Code Playgroud)