我有一个文件中的别名列表.bash_aliases
,正在被复制到远程服务器ansible playbook
.该文件得到复制到目标,但.bashrc
(这反过来加载.bash_aliases
)文件是没有得到使用以下ansible任务加载.
我试过给出可执行参数
- name: source the .bashrc file shell: source ~/.bashrc args: executables: "/bin/bash"
没有争论
- name: source the .bashrc file shell: source ~/.bashrc
使用原始模块
- name: source the .bashrc file raw: source ~/.bashrc
使用命令模块 - 名称:源.bashrc文件命令:source~/.bashrc
什么都行不通!任何帮助
通过阅读您的评论,您表示您正在尝试制作永久别名,而不是针对特定会话.为什么不在/etc/profile.d中的那些别名中创建那些你需要拥有这些特定别名而不是用户的机器上的别名?
另外,当我在Ansible细节上运行google搜索时出现的另一个帖子,因为我不是Ansible专家...... 不可能使用Ansible来源.bashrc(感谢@chucksmash的链接)
"Steve Midgley
您有两个选项可以使用ansible源代码.一个是"shell:"命令和/ bin/sh(ansible默认值)."来源"被称为"." 在/ bin/sh.所以你的命令是:
-name: source bashrc sudo: no shell: . /home/username/.bashrc && [the actual command you want run]
请注意,您必须在采购之后运行命令.bashrc b/c每个ssh会话都是不同的 - 每个ansible命令都在单独的ssh事务中运行.
你的第二个选择是强制Ansible shell使用bash然后你可以使用"source"命令:\
name: source bashrc sudo: no shell: source /home/username/.bashrc && [the actual command you want run] args: executable: /bin/bash
最后,我会注意到,如果您使用的是Ubuntu或类似设备,您可能想要实际获取"/ etc/profile",这样可以更完整地模拟本地登录."