![如何在不同的语言中使用通用的环境变量库?](https://linux22.com/image/614138/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E8%AF%AD%E8%A8%80%E4%B8%AD%E4%BD%BF%E7%94%A8%E9%80%9A%E7%94%A8%E7%9A%84%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E5%BA%93%EF%BC%9F.png)
我们用三种主要语言来执行系统任务: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 脚本。