如何使用Fabric设置环境变量

时间:2012-12-04 22:34:20

标签: shell ubuntu fabric

我有一个很大程度上依赖于系统环境变量的本地开发环境(它遵循Heroku 12-factor app模型),我目前使用shell脚本设置它们。 shell脚本还设置了git遥控器,并激活了virtualenv环境,如果可能的话,我想将所有这些移动到Fabric命令(或一系列命令),因为我们使用Fabric来获取其他一些东西,我想退出shell脚本。

正在运行local('export FOO=bar')不起作用:

$ fab set_default_env_vars
Using fabfile '/home/hugo/Projects/test/fabfile.py'
[localhost] local: export FOO=bar

Done.

$ echo $FOO

$

这可能 - 如果是的话,怎么样?

1 个答案:

答案 0 :(得分:19)

您可以使用fabric.context_managers.shell_env export变量来为您的shell以及从中生成的所有子shell进行bash - 但这些变量不会超出它们定义的shell(因此您可以不要像你的例子那样为结构脚本设置父shell的环境变量。)

可以设置一个bash脚本,您为本地环境identical to what you would add to ~/.profile in your production slug(在其密钥中,不一定是其值)提供源代码,并使用fabric.context_managers.prefix来源运行本地命令之前的那个文件。