exportar todas las variables desde EnvironmentFiles

Me gustaría exportar todas las variables utilizadas por cierto service systemd, y están especificadas en su file de unidad usando EnvironmentFile .

Ej. foo.service :

 [Service] ... EnvronmentFile=/foo.env EnvronmentFile=/bar.env 

foo.env :

 a=1 #b=2 c=3 

Así que he pensado agregar algo a mi bashrc como

 set -a grep EnvironmentFile /etc/systemd/system/foo.service | grep -v '^ *#' | cut -d'=' -f2 | xargs -I {} bash -c 'source {};' set +a 

como se especifica en esta respuesta .

¿Hay una solución más elegante?

Esto no funcionará en absoluto porque estás ejecutando un nuevo shell bash para hacer la 'fuente'

Tratar:

 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