環境ファイルからすべての変数をエクスポートする

環境ファイルからすべての変数をエクスポートする

特定のシステムサービスで使用されるすべての変数をエクスポートします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

関連情報