我想导出某个 systemd 服务使用的所有变量,并使用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
这根本不起作用,因为您正在执行一个新的 bash shell 来执行“源”
尝试:
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