2017-02-13 74 views
0

我正在尝试为文件生成加密密钥,然后将其保存下次脚本运行时使用。我知道这不是很安全,但它只是一个临时解决方案,用于保护git回购密码。如何设置“系统级”环境变量?

subprocess.call('export KEY="password"', shell=True)返回0并且什么都不做。 在我的bash提示符下手动运行export KEY="password"可以在Ubuntu上正常工作。

回答

1

这不是你可以做的事情。你的子进程调用会创建一个子shell并在其中设置env var,但不会影响当前进程,更不用说调用shell了。

2

subprocess.call('export KEY="password"', shell=True)

创建了一个外壳,设置您KEY并退出:一事无成。

环境变量不会传播到父进程,只传播给子进程。在bash提示符中设置变量时,它对所有子进程都有效(但不在bash提示符之外,用于快速并行)

使用python的唯一方法是使用a设置密码主Python脚本(使用os.putenv("KEY","password")os.environ["KEY"]="password")调用子模块或进程。

+0

我想'os.environ'第一,但就像你说的,只存在于子进程。我的脚本完成,退出,然后再次运行,所以我必须保存它。我唯一的选择是写一个文本文件吗? –

+0

我开始想知道你的bash导出解决方案现在有什么问题吗?正如你所说,写入文件是不安全的。听起来越来越像XY问题给我。 –

1

使用Python:

#SET: 
os.environ["EnvVar"] = "1" 

#GET: 
print os.environ["EnvVar"]