Flask 面料&x2B;DigitalOcean:不可见的环境变量?

Flask 面料&x2B;DigitalOcean:不可见的环境变量?,flask,environment-variables,fabric,digital-ocean,Flask,Environment Variables,Fabric,Digital Ocean,我在DigitalOcean上有一个服务器,我使用fabric部署代码。我的代码依赖于环境变量(flask config)。今天我遇到了一个奇怪的问题:在/root/.bashrc中的服务器上,我添加了下一行 export CONFIG=/path/to/conf 当我在远程控制台上执行时 >>> echo $CONFIG >>> /path/to/conf # result, as it should be 但是在fabfile中,我有一个函数 def

我在DigitalOcean上有一个服务器,我使用fabric部署代码。我的代码依赖于环境变量(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")
它会打印一个空字符串。为什么?
提前谢谢

情况不应该是这样,因为默认情况下,Fabric使用
-l
标志,该标志应该
使bash充当登录shell(请参见下面的调用)。

我也无法复制您的问题:

$ 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()
与结构用法中的
sudo()
不同)