特定のシステムサービスで使用されるすべての変数をエクスポートしますEnvironmentFile
。
例えばfoo.service
:
[Service]
...
EnvronmentFile=/foo.env
EnvronmentFile=/bar.env
foo.env
:
a=1
#b=2
c=3
bashrc
だから私のものに追加したい
set -a
grep EnvironmentFile /etc/systemd/system/foo.service | grep -v '^ *#' | cut -d'=' -f2 | xargs -I {} bash -c 'source {};'
set +a
この記事に記載されているように回答。
よりエレガントなソリューションはありますか?
答え1
"source"を実行するために新しいbashシェルを実行しているので、まったく機能しません。
努力する:
load_env()
{
local files=( $(egrep '^[ ]*EnvironmentFile' "$1" ) )
local f
set -a
for f in "${files[@]}"
do
. "${f##*=}" # this expression delete the EnvironmentFile= part
done
set +a
}
load_env /etc/systemd/system/foo.service