如何在不同的语言中使用通用的环境变量库?

如何在不同的语言中使用通用的环境变量库?

我们用三种主要语言来执行系统任务:Bash、Ruby、PHP 和 Perl。四种,四种主要语言。

我们使用托管环境变量来提供自动化脚本所需的授权信息。例如,mysql 用户帐户和密码。

我们希望使用一个单一的托管文件来维护这些变量。在某些情况下,例如在 cron 中,这些环境变量不可用。它们在 CLI 脚本中可用,因为我们在每个人的配置文件中都获取了环境文件。但像 cron 这样的东西不会这样做。

在 CLI 上,当获取 env 文件时,任何给定的脚本都可以访问这些变量。Bash 直接拥有它们,PHP 拥有 $_ENV,ruby 拥有 ENV,等等。

我们无法将文件导入非 Bash 脚本,因为大多数语言都是通过在子 shell 中运行来实现 shell 命令的。

我们考虑解析 Bash、转换为脚本的语言,并在生成的字符串上运行相当于“exec(parsed_output)”的程序。

为在 cron 或类似程序中运行的脚本提供托管环境变量的良好解决方案是什么?

答案1

我们无法将文件导入非 Bash 脚本

不是 - 但是如果它们在非 Bash 运行时启动时已经在环境中,那么它就可以访问数据 - 在 php 中通过 $_ENV,在 perl 中通过 %ENV,在 Ruby 中通过 ENV。

由于大多数守护进程(包括 apache、nginx 和我遇到的 fastCGI 守护进程)的启动脚本通常都是作为 shell 脚本实现的,因此可以从那里获取默认的 shell 脚本。

相关内容