Shell
有沒有一種方法可以在一個地方而不是兩個地方定義我的環境變數?
我正在使用 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
有什麼方法可以只在一個地方定義這些變數,然後從一個文件中引用它們?
一種可能性是將變數放在文件
/etc/environment
中的形式MY_ENV_VAR1=envvar1 MY_ENV_VAR99="value with spaces"
這些將
pam_env
在登錄時讀取和導出。要讓 apache 讀取相同的文件,請使用EnvironmentFile=/etc/environment
在單元文件中。請注意,systemd 設計者不喜歡使用這個關鍵字,所以也許有一天它會被棄用,然後被刪除,但為了務實,它現在可以工作。小心在變數中使用任何特殊字元,因為 pam 和 systemd 不會以相同的方式解析它們。