我想运行这个任务,但它失败了,因为它没有findbundle
二进制文件,因为我用它运行的用户在Ansible中有一个不同的$ PATH比sudo su - deploy
。
如果我以root身份进入SSH,然后运行sudo su - deploy
和deploy /home/deploy/.rbenv/shims:/home/deploy/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
echo 'whoami' $PATH
我得到deploy /home/deploy/.rbenv/shims:/home/deploy/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
。
但是,如果我使用和shell:
相同的命令shell:
部分任务是deploy /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
。
rbenv
部分是在/etc/profile.d/rbenv.sh
设置的,但是如果我用Ansible运行它,它不会被加载。
我发现一个古怪的黑客前缀所有我的shell:
PARAMS source /etc/profile.d/rbenv.sh
但感觉肮脏:)
我怎样才能解决这个问题?
PS:我在Fedora 23上使用Ansible 2.0.2.0,并与Ubuntu 14.04服务器进行通信。
http://bencane.com/2013/09/16/understanding-a-little-more-about-etcprofile-and-etcbashrc/
区别很简单,仅在交互式shell中执行/ etc / profile,而对于交互式和非交互式shell执行/ etc / bashrc。 实际上,在Ubuntu中,/ etc / profile直接调用/ etc / bashrc。
因此,在/etc/profile.d/rbenv.sh中包含.bashrc或
我发现一个古怪的黑客前缀所有我的外壳:PARAMS源/etc/profile.d/rbenv.sh