启动时动态设置全局环境变量

启动时动态设置全局环境变量

我有一个 Ubuntu 18.04 vm,它通过 执行脚本/etc/profile.d。该脚本连接到外部数据源(在本例中为 azure),拉取一些 json,并将其转换为环境变量。我希望这些环境变量可以全局供用户、守护进程、systemd 等使用,但我意识到它仅适用于登录 shell。我读到它/etc/environment存在,但它是静态的,而不是脚本文件。

  1. 在 profile.d 中运行此脚本似乎很脆弱...如果数据源暂时不可用,则可能会影响我的 VM 启动能力。
  2. 我曾考虑过使用脚本将值附加到/etc/environment,但感觉不太现实,而且我不确定 systemd 运行时环境变量是否在范围内。
  3. 我能够使用该-l标志将特定的 systemd 单元配置为像登录 shell 一样运行,并且这样做有效......但它不是唯一需要这样做的单元或位置,因此似乎无法维护。此外,外部数据调用的速率被限制为较低的速率......它实际上应该只发生一次。
  4. 与 3 类似,我可以直接引用脚本在需要的任何地方设置环境变量,但这有同样的缺陷并且不可维护。

我现在只是在原地踏步,有点像 Linux 新手。在启动时动态设置全局变量的正确方法是什么?

相关内容