gpt4 book ai didi

linux - 无法获取 Chef Recipe 以获取 .bashrc,我做错了什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:50 24 4
gpt4 key购买 nike

我写了一本 Chef Recipe ,它配置了一些服务器 .bashrc 文件。

接下来我要做的是 source 文件以加载说明书添加的一些别名。

但无论我尝试什么,源命令都不会发生或不起作用,并且别名丢失。

这是 Recipe 的相关部分:

bash 'create_command' do
user 'ubuntu'
code <<-EOH
grep -q "\.isMaster.js" /home/ubuntu/.bashrc || echo "alias isMaster='/usr/bin/mongo localhost:27017 --quiet .isMaster.js'" | tee -a /home/ubuntu/.bashrc
EOH
end

execute "source_bashrc" do
command "bash -c 'source /home/ubuntu/.bashrc'"
end

这是我尝试过的:1. 添加 source 命令作为 bash 'create_command' 代码的第二行。

  1. 在该部分添加了第二个 block 。

  2. 将命令行编辑为:

    command 'source/home/ubuntu/.bashrc' #(没有“bash -c”)

还尝试添加:

script 'source_bashrc' do
interpreter "bash"
code <<-EOH
#!/bin/bash
source /home/ubuntu/.bashrc
EOH
end

我也尝试了一些其他的东西,但无论我做什么,.bashrc 文件都不是源代码。

知道我做错了什么吗?

最佳答案

这不是环境变量的工作方式。当您在 shell 中使用 source 时,该 shell 进程会评估文件并调用 setenv() 一堆(可能还有其他一些东西)。但这只会影响当前进程(同样是 bash,而不是 chef-client)和 future 的子进程。子进程不能修改其父进程中的环境变量。这在所有操作系统中都是如此,与 Chef 无关。所以 source 确实有效,但它只适用于那部分脚本,因此它实际上什么都不做。

关于linux - 无法获取 Chef Recipe 以获取 .bashrc,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49562010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com