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