13

我有一个严重依赖系统环境变量的本地开发环境(它遵循 Heroku 12 因素应用程序模型),我目前使用 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

$

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

4

1 回答 1

20

您可以使用一个变量fabric.context_managers.shell_envexport为您的 shell 以及由此产生的所有子 shell 进行 bash - 但这些变量不会持续存在于它们定义的 shell 之外(因此您不能从结构脚本为父 shell 设置环境变量你的例子有它的方式)。

可以为本地环境设置一个 bash 脚本,该脚本与您在生产 slug中添加的~/.profile内容相同(在其键中,不一定是其值),并fabric.context_managers.prefix在运行本地命令之前用于获取该文件。

于 2012-12-05T04:14:42.677 回答