Kornシェルスクリプトがあります
#!/bin/ksh
# set the right ENV
case $INPUT in
abc)
export BIN=${ABC_BIN}
;;
def)
export BIN=${DEF_BIN}
;;
*)
export BIN=${BASE_BIN}
;;
esac
# exit 0 <- bad idea for sourcing the file
現在、これらのVARはサブシェルでのみエクスポートされていますが、親シェルでも設定したいので、プロンプトでこれらの変数が正しく設定されています。
私は知っています
. .myscript.sh
しかし、「調達」せずにそれを行う方法はありますか?ユーザーが「ソース」を忘れることが多いため。
EDIT1:「exit 0 "部分を削除する-これは私が最初に考えることなくタイプしただけでした
EDIT2:なぜ私はこれが必要なのかについての詳細を追加します:開発者は(簡単にするために)2つのアプリのコードを記述します:ABCとDEF。すべてのアプリは、別々のユーザーusrabcとusrdefによって運用環境で実行されているため、アプリ固有の$ BIN、$ CFG、$ ORA_HOMEなどをセットアップしています。
そう
- ABCの$ BIN = / opt / abc / bin#上記のスクリプトの$ ABC_BIN
- DEFの$ BIN = / opt / def / bin#$ DEF_BIN
等
現在、開発ボックスでは、開発者は自分のユーザーアカウント 'justin_case'でABCとDEFの両方を同時に開発できます。また、ENV変数の設定を相互に切り替えられるように、ファイル(上記)をソースとして作成します。($ BINは一度に$ ABC_BINを指す必要があり、その後$ BIN = $ DEF_BINに切り替える必要があります)
これで、スクリプトは同じアプリの並行開発などのために新しいサンドボックスも作成する必要があります。これにより、サンドボックス名などを求めてインタラクティブに行うことができます。
- / home / justin_case / sandbox_abc_beta2
- / home / justin_case / sandbox_abc_r1
- / home / justin_case / sandbox_def_r1
私が検討した他のオプションは、エイリアスを作成してすべてのユーザーのプロファイルに追加することです
- エイリアス 'setup_env =。.myscript.sh '
そしてそれを実行する
- setup_env parameter1 ... parameterX
これは今ではもっと理にかなっています