仅当环境变量为空时才设置它

仅当环境变量为空时才设置它

我正在为某个插件设计一个 systemd 服务文件。我需要在其中包含两个环境文件:第一个用于主程序(假设为main.env),第二个 — 用于插件(plugin.env)。插件VAR在启动之前需要定义一些变量。

有时用户可能希望在中定义此变量main.env,有时此变量可能丢失,实际上我无法控制主程序的环境文件,此变量可能会在下一个版本中作为非强制性变量从中删除。

因此,我想为变量提供一个后备值,但仅限于尚未设置的情况下。我还希望实际定义此后备值,plugin.env以便用户可以在本地更改此值而不会在更新后丢失它,并且我在同一文件中使用此变量来设置下一个变量。

在 bash 中,我想要的是这样的:: ${VAR:=fallback_value}。是否可以在 systemd 环境文件中写入这个?

我查看了手册(这里),但遗憾的是,没有找到任何相关内容。

答案1

Environment=VAR=fallback_value满足我的要求。确切地说:

  1. VAR当且仅当它未在任何环境文件中定义时才定义(实际上,在读取配置文件之前,如果在这些文件中定义了该值,则该值会被覆盖)
  2. 在包含时使其定义plugin.env,以便我可以在此文件中定义某些内容,以OPTION=${VAR}/value1确保它VAR永远不会为空。

參考,在那里 grep «Environment=»。

相关内容