我已将以下行添加到/etc/environment
:
FOO_DEPLOYMENT_ENV="vbox"
通过 SSH 登录后,我echo $FOO_DEPLOYMENT_ENV
当然可以看到vbox
shell 的输出。如果我打开 Python shell 并运行os.getenv('FOO_DEPLOYMENT_ENV')
,它将返回'vbox'
,但 Python 应用程序中的相同代码,当由 uWSGI(作为用户www-data
)运行时,它看不到环境变量。
显然,这不是 uWSGI 的问题,而是我对环境变量的理解存在问题,或者对如何正确设置环境变量以及在哪些上下文中可以检索环境变量存在理解问题。我做错了什么或理解错了什么?
答案1
简而言之,您不能。环境变量可以存在于特定的 shell 实例中,并且可以导出到子 shell。但在任何情况下,您都不能将环境变量导出到父级 shell,当然也不能导出到任何 shell 链之外。
但是,您可以按照建议将条目存储在文件中,然后在 SH 衍生品的情况下通过“。”命令或source
CSH 衍生品的命令手动导入它们。
我个人将其tcsh
用于交互式 shell。如果您使用它,您可以放置一个名为的别名,cwdcmd
它将在每个输入的命令之间执行一组命令。我使用此功能将主机名、用户名和当前工作目录放入我的命令提示符中。使用此功能,您可以include
在每个命令提示符之间放置一个调整环境的指令。