当我尝试重新加载位于 /etc/profile 中的 bash 配置文件时遇到问题。
我尝试通过多种方式加载它,从 命令:
. /etc/profile
以及带有脚本模块和 shell 的脚本文件。
Ansible 给出了所有更改后的状态,但是当我尝试回显配置文件内的变量时,例如
echo $myname
,它们在 playbook 中完成执行后什么也不打印。
当我尝试使用终端再次加载它时
. /etc/profile
变量已加载,我可以回显它的值。
我还在 profile.d 目录中创建了一个脚本文件,并使用 Ansible 加载它,但没有任何反应。
ps。完整的 root 权限是通过变得和
获得的 范围。我正在使用 vagrant box 和 centos 7 X64。--ask-become-pass
谢谢你...
1) 获取配置文件仅适用于单个任务。
例如,如果您的个人个人资料(我还没有到达
/etc/profile
)设置了myname=Ameen
,那么在以下代码中,第一个任务应该回显您的名字,但第二个任务不应回显:
- shell: 'cd; . ./.bash_profile; echo "[$myname]"`
- shell: 'echo "[$myname]"'
每项任务都是一个独特的环境。在本地 shell 环境中设置的变量将不可用于稍后连接的另一个环境,但不会为自己再次设置它们。
我的输出:
[Ameen]
[]
2) bash 使用
,通常源自.bash_profile
,通常源自~/.bashrc
。/etc/bashrc
在
ksh
中,通常是 ~/.profile
、~/.kshrc
和 /etc/profile
,尽管所有这些显然都是可配置的,只是在给定系统上可以完全不同地完成的约定,尽管您应该考虑原因。
3) 您真的希望在所有用户来源的全局配置文件中设置
吗?myname
或者这只是您问题的一个例子?
Ansible 将我的变量加载到我的全局配置文件中,不需要更改,因为它已经放置在该配置文件中
我在相同的环境中传递脚本,因此java成功读取变量