exportar todas as variáveis de EnvironmentFiles

1

Gostaria de exportar todas as variáveis usadas por um determinado serviço systemd e são especificadas em seu arquivo de unidade usando EnvironmentFile .

Por exemplo foo.service :

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

foo.env :

a=1
#b=2
c=3

Então, eu pensei em adicionar ao meu bashrc algo como

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

conforme especificado nesta resposta .

Existe uma solução mais elegante?

    
por dimid 12.02.2017 / 09:04

1 resposta

1

Isso não funcionará porque você está executando um novo shell bash para fazer o 'source'

Tente:

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
    
por 12.02.2017 / 16:52