我認爲你的第三種可能性是正確的。你所缺少的是一個包裝腳本的概念,它的唯一功能是設置環境,然後用任何所需的選項調用主程序。
要創建一個可以用作控制腳本的包裝器腳本(如果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