用fabric执行命令,在.bashrc里面export的环境变量无法加载?有解决方案吗?
fab代码如下:
from fabric.api import *
env.shell="/bin/bash -l -c"
env.hosts=['user@ip']
def test_run():
with prefix('source ~/.bashrc'):
run('echo $PATH')
远程服务器上.bashrc有如下配置:
export JAVA_HOME=~/jdk1.7.0_75
export PATH=$PATH:${JAVA_HOME}/bin
fabric执行 echo $PATH 没有java相关的配置
我发现一些猫腻了,debian home下面有个.profile这个配置文件,在里面配置的export环境变量可以被fabric加载,太奇怪了。我直接ssh上去可以自动加载.bashrc里面的export变量,晕菜了。
Context Managers — Fabric documentation http://docs.fabfile.org/en/1.10/api/core/context_managers.html