2009年5月8日 星期五

profile with multiple choice

有時候基於硬體資源上的限制,必須在同一台主機上使用同一帳號來建立不同的環境,以區隔出不同的需求。最常見的例子就是使用 oracle 帳號來建立兩個 / 多個不同的 database,例如 demo1 與 demo2。

通常使用 oracle 帳號登入系統時,只能載入一個預設的 ORACLE_SID 以及其他相對應的環境變數。如需要切換至另一個 database 時,則需另外執行 export ORACLE_SID=demo2 來改變環境變數。

倘若同一機器上有多個環境時,以上的作法不僅增加使用者的負擔,也容易混淆當前的設定。因此,建議的作法是在登入時,在 .profile / .bash_profile 設定登入環境選項,讓使用者可自由選擇所需的作業環境。

以下是 .profile 的簡單範例:
=================================================
echo "請選擇 1) 正式區 ( ORACLE_SID=demo1 ) "
echo " 2) HR區 ( ORACLE_SID=demo2 ) "
echo " 3) 測試區 ( ORACLE_SID=demo3 ) "
echo " *) nothing "
read ans;
case $ans in
1) ORACLE_SID=demo1;export ORACLE_SID
PS1='';export PS1;;
2) ORACLE_SID=demo2;export ORACLE_SID
PS1='';export PS1;;
3) ORACLE_SID=demo3;export ORACLE_SID
PS1='';export PS1;;
*) unset ORACLE_SID
PS1='';export PS1;;
esac
=================================================

當使用者登入時,會有 1、2、3 與 any key 四種選項,當選擇 1 或 2 或 3 時,即會載入該選項下的環境變數,並在 command line 顯示目前所在環境名稱與工作路徑。當選擇其他非 1、2、3 的選項時,則會使用 *) 選項下的環境變數。

若某些環境變數適合應用於所有的選項,則可直接置於 profile 的最上端。

沒有留言:

張貼留言