我认为你的第三种可能性是正确的。你所缺少的是一个包装脚本的概念,它的唯一功能是设置环境,然后用任何所需的选项调用主程序。
要创建一个可以用作控制脚本的包装器脚本(如果prodEnv使用DB = ProdDB等),还有一件事可以简化这个问题。 Bash/ksh都支持一个名为sourcing files的功能。这是shell提供的一个操作,用于打开文件并执行文件中的内容,就像它嵌入在主脚本中一样。像C和其他语言中的#include
一样。
ksh和bash会自动输入/etc/profile
,(有时),$HOME/.profile
。还有其他的文件名也会被选中,但在这种情况下,您需要制作自己的env文件并明确加载它。
正如我们在谈论包装脚本,并且您想要管理您的环境如何设置,您将需要在包装脚本中进行采购。
如何获取环境文件?
envFile=/path/to/my/envFile
. $envFile
其中envFile将充满了之类的语句
dbServer=DevDBServer
webServer=QAWebServer
....
,你可能会发现你需要导出这些变量对它们进行visble
export dbServer webServer
另一种分配/导出支持
export dbServer=DevDBServer
export webServer=QAWebServer
根据您的不同环境的不同之处,您可以让包装脚本确定要加载哪个环境文件。
case $(/bin/hostame) in
prodServerName)
envFile=/path/2/prod/envFile ;;
QASeverName)
envFile=/path/2/qa/envFile ;;
devSeverName)
envFile=/path/2/dev/envFile ;;
esac
. ${envFile}
#NOW call your program
myProgram -v -f inFile -o outFile ......
当你开发你的数据处理环境越来越多的脚本,可以送花儿给人source
您在顶部envFile。当您最终更改服务器的物理位置(或名称)时,则只有一个地方需要进行更改。
IHTH
我这样做的方式是将这些变量放在.bashrc文件中,这样,当我ssh到服务器时,我将直接设置这些变量而不需要包装脚本,并且它们是安全的,因为只有可以登录到可以访问它们的服务器的人员。如果您想要在多台服务器上部署您的应用程序并设置许多变量,则包装脚本非常有用。 – 2014-04-21 16:56:38