linux - Unix/Linux - 多个应用程序使用相同的环境变量但值不同?

标签 linux bash shell unix

我正在寻找以下方面的一些建议:

我在一台服务器上有几个应用程序和工具,需要使用变量等设置环境才能运行。

许多这些应用程序使用相同的环境变量来运行,但具有不同的值。

其中一些应用程序有多个版本。例如prog v1.1prog v1.2prog v1.3 等。

Example: prog v1.1 uses environment variable VAR1 = VAL1, but prog v1.2 needs VAR1 = VAL2 in order to run. It is the same variable, but different values required for each application.

Another example is: prog3 could require a number of environment variables set that prog4 doesn't need.

在为这些应用程序设置环境时还涉及逻辑,例如if file exists;做这个;否则这样做


我创建了 shell 脚本 ,例如prog1setup.shprog2setup.sh为每个应用程序设置环境,然后:

  1. 为每个需要运行的应用程序启动一个新的shell,
  2. 运行shell脚本然后
  3. 运行该应用程序,使其继承环境变量

我想知道的是,是否有任何可用的开源工具可用于更好地管理此问题,因为可能会有很多应用程序?我一直在做一些研究,遇到了诸如 launcherdsupervisorEnvironment modules 但我以前没有使用过这些。

如果有人使用过其中的任何一个,请提供一些见解,说明它是否可以在此处应用,或者是否有其他建议?


谢谢

最佳答案

既然你提到了创建脚本,我建议创建 prog1.sh

#!/bin/bash
export VAR1=VAL1
prog1 "$@"

并用

创建prog2.sh
#!/bin/bash
export VAR1=VAL2
prog2 "$@"

然后,永远不要直接运行 prog1prog2。相反,运行 prog1.shprog2.sh。由于 shell 脚本环境从不影响调用 shell,因此变量 VAR1 仅在需要时存在,并在脚本执行完毕后消失。

备选

有些人更喜欢函数而不是脚本,因为函数定义可以方便地存储在 ~/.bashrc 中。作为设置所需环境变量的函数示例:

date2() ( export TZ=Asia/Tokyo; date "$@" )
date3() ( export TZ=Europe/Paris; date "$@" )

这些可以按如下方式使用:

$ date2
Wed Jul  8 14:49:30 JST 2015
$ date3
Wed Jul  8 07:49:31 CEST 2015

关于linux - Unix/Linux - 多个应用程序使用相同的环境变量但值不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31284322/

相关文章:

c++ - oprofile: "[vectors] (tgid:20712 range:0xffff0000-0xffff1000)"是什么意思?

java.lang.NoClassDefFoundError : Could not initialize class org. apache.xmbeans.XmlBeans 错误

创建一个新进程来执行ls命令

linux - 查找字符串中的模式,然后将字符放在变量中的字符串后面

bash - 脚本不显示目录中存在的文件名

linux - 如何获取相对于指定日期的下一小时?

c - Linux 不允许我访问固定的内存区域

linux - 预期:从输出和日志文件中删除颜色代码

linux - 如何 "find all xml files in multiple directories (textfile) and delete"

c - 执行 shell : wrong argument in execvp()