Fabric + DigitalOcean:不可见的环境变量?

时间:2014-03-25 03:16:56

标签: flask environment-variables fabric digital-ocean

我在DigitalOcean上有服务器,我使用fabric来部署我的代码。我的代码依赖于环境变量(flask配置)。我今天遇到了一个奇怪的麻烦:在 /root/.bashrc 的服务器上我添加了下一行

export CONFIG=/path/to/conf

当我在远程控制台上执行时

>>> echo $CONFIG
>>> /path/to/conf  # result, as it should be

但是在 fabfile 我有一个功能

def show():
    run("echo $CONFIG")

它会打印一个空字符串。为什么? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

这不应该是这种情况,因为默认情况下Fabric使用-l标志Make bash act as if it had been invoked as a login shell (see INVOCATION below).

我也无法重现您的问题:

$ fab -H home test_bash
[home] Executing task 'test_bash'
[home] run: grep FOO $HOME/.bashrc
[home] out: export FOO="BAR"
[home] out:

[home] run: echo $FOO
[home] out: BAR
[home] out:

所以我的猜测是你已经更改了env.shell,或者你没有以root用户身份进行连接,这是您设置此bash导出的位置。 (请注意,run()与Fabric使用中的sudo()不同)