有没有一种方法可以在一个地方而不是两个地方定义我的环境变量?

有没有一种方法可以在一个地方而不是两个地方定义我的环境变量?

我使用的是 Ubuntu 18.04。我想在一个地方定义一些环境变量,这些环境变量既可以在系统范围内(通过 shell)访问,也可以在我的 Apache-Python 应用程序中访问。在/etc/profile中,我定义了

export MY_ENV_VAR1=envvar1
export MY_ENV_VAR2=myvalue1
...

然后我有 /lib/systemd/system/apache2.service

[Unit]
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
Environment=APACHE_STARTED_BY_SYSTEMD=true
Environment=MY_ENV_VAR1=envvar1
Environment=MY_ENV_VAR2=value1
...

我已经设置了这些环境变量,以便在我的 Apache 配置文件(/etc/apache2/sites-available/000-default-le-ssl.conf)中,我可以

    PassEnv MY_ENV_VAR1
    PassEnv DB_USER

有没有什么方法可以让我只在一个地方定义这些变量,然后从一个文件到另一个文件引用它们?

答案1

一种可能性是将变量以/etc/environment以下形式放入文件中

MY_ENV_VAR1=envvar1
MY_ENV_VAR99="value with spaces"

这些将在pam_env登录时读取和导出。要让 apache 读取相同的文件,请使用

EnvironmentFile=/etc/environment

在单元文件中。请注意,systemd 设计者不喜欢使用此关键字,因此也许有一天它会被弃用,然后被删除,但为了务实,它目前是有效的。请注意在变量中使用任何特殊字符,因为 pam 和 systemd 不会以相同的方式解析它们。

相关内容