我有一个Korn Shell脚本
#!/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仅在子外壳中导出,但我也希望在我的父外壳中进行设置,因此在出现提示时,这些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
现在对我来说更有意义