如何在键中使用正斜杠设置环境变量

时间:2015-06-09 02:45:14

标签: bash shell environment-variables confd

有没有办法在名称中使用斜杠导出环境变量,例如:

export /myapp/db/username=someval

This post表示它应该是可能的,但我无法找出有效的语法。

背景:

我正在使用confd从模板和密钥库生成配置文件。典型的商店(consul,etcd)使用分层密钥,例如/myapp/db/username。我想透明地允许在使用基于环境变量的提供程序和利用分层键的配置存储之间切换。

2 个答案:

答案 0 :(得分:4)

是的,您可以导出这样的环境变量,但不能从bash export语句中导出。

虽然bash将拒绝创建一个名为a/b的环境变量,但我们可以使用python创建它,而python创建的子shell将会看到它。

作为示例,请考虑以下python命令:

$ python -c 'import os; os.environ["a/b"]="2"; os.system("/bin/bash");'

如果我们运行此命令,我们将进入子shell。从该子shell开始,我们可以看到环境变量的创建是成功的:

$ printenv | grep a/b
a/b=2

(此时,可能想要退出子shell(类型exit或ctrl-D)返回python程序,该程序将退出并返回主shell。)

答案 1 :(得分:1)

export仅标记要导出到环境中的有效shell标识符,而不是任何可在环境中形成有效名称/值对的字符串。但是,您可以使用env创建具有此类环境的 shell实例。

env "/myapp/db/username=someval" bash
相关问题