2

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

export CONFIG=/path/to/conf

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

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

但在fabfile我有一个功能

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

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

4

1 回答 1

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 导出的用户身份连接。(注意在 Fabric 的使用中run()a 是不一样的)sudo()

于 2014-03-29T17:50:40.057 回答