我正在尝试为文件生成加密密钥,然后将其保存下次脚本运行时使用。我知道这不是很安全,但它只是一个临时解决方案,用于保护git回购密码。如何设置“系统级”环境变量?
subprocess.call('export KEY="password"', shell=True)
返回0
并且什么都不做。 在我的bash提示符下手动运行export KEY="password"
可以在Ubuntu上正常工作。
我正在尝试为文件生成加密密钥,然后将其保存下次脚本运行时使用。我知道这不是很安全,但它只是一个临时解决方案,用于保护git回购密码。如何设置“系统级”环境变量?
subprocess.call('export KEY="password"', shell=True)
返回0
并且什么都不做。 在我的bash提示符下手动运行export KEY="password"
可以在Ubuntu上正常工作。
这不是你可以做的事情。你的子进程调用会创建一个子shell并在其中设置env var,但不会影响当前进程,更不用说调用shell了。
subprocess.call('export KEY="password"', shell=True)
创建了一个外壳,设置您KEY
并退出:一事无成。
环境变量不会传播到父进程,只传播给子进程。在bash提示符中设置变量时,它对所有子进程都有效(但不在bash提示符之外,用于快速并行)
使用python的唯一方法是使用a设置密码主Python脚本(使用os.putenv("KEY","password")
或os.environ["KEY"]="password"
)调用子模块或进程。
使用Python:
#SET:
os.environ["EnvVar"] = "1"
#GET:
print os.environ["EnvVar"]
我想'os.environ'第一,但就像你说的,只存在于子进程。我的脚本完成,退出,然后再次运行,所以我必须保存它。我唯一的选择是写一个文本文件吗? –
我开始想知道你的bash导出解决方案现在有什么问题吗?正如你所说,写入文件是不安全的。听起来越来越像XY问题给我。 –