linux - 从 systemd 配置加载环境到 bash 脚本

标签 linux bash systemd

我想从服务的 systemd 配置文件 (*.conf) 中导入一些环境变量到 bash 中。

例子

/etc/systemd/system/test.service.d/*.conf 下是一些配置文件,例如...

[Service]
Environment="VAR1=v1"
Environment="Var2=v2"

根据文件的字母顺序,它们可以覆盖某些值。 我需要的是我的 bash 脚本中变量的值。

是否有直接命令(来自 systemd)将变量导入正在运行的 bash 脚本? 我是否必须解析 .conf 文件并导入变量手册?

备注:bash 脚本不是作为 systemd 服务启动的。

最佳答案

我不知道有任何 systemd 命令可以让您直接导入此类变量。

但是,将变量获取到脚本中应该不是什么大问题(前提是您事先知道需要哪些变量以及文件中的语法)。您可以执行以下操作:

MyVar1="$(grep -i 'Environment=\"VAR1=' /folder/file | cut -f3 -d'=' | cut -f1 -d'"')"
echo "$MyVar1"
v1

一些评论:请注意 grep -i 使搜索不区分大小写。请注意在 \"VAR1= 上转义引号的反斜杠。请注意,cut -f3 -d'=' 会将字符串分成由 =< 分隔的字段,它将删除第三个字段之前的所有内容——在这种情况下,它将删除第二次出现 = 之前(包括在内)的所有内容。

关于linux - 从 systemd 配置加载环境到 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41162715/

相关文章:

linux - 使用shell加载变量替换占位符

linux - FFmpeg 不复制所有音频流

linux - 我如何阻止某人使用 linux 中的 write 命令向我的控制台发送垃圾邮件

linux - 如果我正在使用 ssh 远程执行其中一个脚本,那么在将参数从一个脚本传递到另一个脚本时如何保留空格?

bash - 🛠 是无效的 Bash 别名

Virtualbox headless : not starting via systemd

linux - Windows 上的哪个 IDE 和工具链可以为嵌入式 ARM Linux 生成程序?

mysql - 如何在 bash/mysql 脚本中引用 .my.cnf 的位置?

node.js - 如何在日志访问 NGINX 文件中添加控制台输出 Node.js 应用程序?

linux - 获取 systemd 的默认限制