用于更新环境的源env.bash脚本
envbash的Python项目详细描述
用于获取bash脚本以增强环境的python模块。 支持Python2.7和3.4+
基本原理
12-factor apps需要configuration loaded from the environment。
那是easy on a platform like Heroku,在那里 环境是由用户使用如下命令预设的 heroku config:set。但它在发展和非英雄方面更混乱 部署,其中可能需要从文件加载环境。
此包提供了一种机制,用于获取要更新的bash脚本 python的环境(os.environ)。通常外部文件被称为 env.bash,因此该项目的名称。
用法
调用load_envbash将bash脚本导入当前python进程。 脚本中设置的任何变量,无论它们是否 显式导出,将添加到流程环境中。
例如,给定具有以下内容的env.bash:
FOO='bar baz qux'
这可以加载到python中:
importosfromenvbashimportload_envbashload_envbash('env.bash')print(os.environ['FOO'])#=> bar baz qux
常见问题解答
这和dotenv有何不同?
两个项目的目标都是解决同一个问题,但方法不同。在 特别是,dotenv使用特殊的配置语法,而envbash使用 猛击。
dotenv的语法成为多行字符串的问题。Dotenv打算 shell可读的.env文件,但是 多行字符串与shell不兼容。
如果关键是要有一个非常适合的配置语言 环境变量,很难打败纯bash,而且它是有保证的 正确地进入外壳。
我应该向源代码管理提交env.bash吗?
不,绝对不是。env.bash的目的是存储开发 不适合提交到存储库的配置, 无论是密钥还是特定于开发人员的自定义项。在 事实上,您应该将以下行添加到.gitignore:
/env.bash
有必要在env.bash中显式地export变量吗?
不,envbash前缀使用set -a来获取您的env.bash,其中 使所有新设置的变量自动导出。如果你 如果希望显式导出变量,可以在顶部set +a。 你的env.bash的。
如何将多行字符串放入env.bash?
在bash中,可以将换行符直接放入多行字符串中,因此 示例此操作有效:
PRIVATE_KEY=" -----BEGIN RSA PRIVATE KEY----- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -----END RSA PRIVATE KEY-----"
envbash是否覆盖我的环境设置?
默认情况下,您的本地环境设置将获胜,因此您可以覆盖 通过在shell中显式导出变量,env.bash的内容。
你可以改变这种行为。这对于部署的实例来说是有意义的 从env.bash获取完整配置并需要保护的 从呼叫环境。
load_envbash('env.bash',override=True)
我可以从环境中删除设置吗?
默认情况下,envbash不删除设置,但您可以更改此设置 行为。
load_envbash('env.bash',remove=True)
这将导致您显式地unsetin env.bash也将从python的os.environ中删除。
如何将env.bash源代码导入到来宾shell环境中?
假设源目录在默认情况下可用 /vagrantmount point在来宾中,您可以在 /home/vagrant/.bash_profile底部:
set -a; source /vagrant/env.bash; set +a
注意,这意味着设置加载在vagrant ssh上,因此 需要退出shell并重新运行^ {TT25}$以刷新 更改设置。