我正在寻找以下方面的一些建议:
我在一台服务器上有几个应用程序和工具,需要使用变量等设置环境才能运行。
许多这些应用程序使用相同的环境变量来运行,但具有不同的值。
其中一些应用程序有多个版本。例如prog v1.1
、prog v1.2
、prog v1.3
等。
Example:
prog v1.1
uses environment variableVAR1 = VAL1
, butprog v1.2
needsVAR1 = 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 thatprog4
doesn't need.
在为这些应用程序设置环境时还涉及逻辑,例如if file exists;做这个;否则这样做
我创建了 shell 脚本 ,例如prog1setup.sh
、prog2setup.sh
等为每个应用程序设置环境,然后:
- 为每个需要运行的应用程序启动一个新的shell,
- 运行shell脚本然后
- 运行该应用程序,使其继承环境变量
我想知道的是,是否有任何可用的开源工具可用于更好地管理此问题,因为可能会有很多应用程序?我一直在做一些研究,遇到了诸如 launcherd
、supervisor
和 Environment modules
但我以前没有使用过这些。
如果有人使用过其中的任何一个,请提供一些见解,说明它是否可以在此处应用,或者是否有其他建议?
谢谢
最佳答案
既然你提到了创建脚本,我建议创建 prog1.sh
#!/bin/bash
export VAR1=VAL1
prog1 "$@"
并用
创建prog2.sh
#!/bin/bash
export VAR1=VAL2
prog2 "$@"
然后,永远不要直接运行 prog1
或 prog2
。相反,运行 prog1.sh
或 prog2.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/