У меня есть скрипт оболочки 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
но есть ли способ сделать это без "источников"? так как мои пользователи часто забывают «источник».
РЕДАКТИРОВАТЬ1: убрав часть «выход 0» - я просто набрал текст, не думая сначала
РЕДАКТИРОВАТЬ 2: добавить больше подробностей о том, зачем мне это нужно: мои разработчики пишут код (для простоты) 2 приложений: ABC & DEF. каждое приложение запускается в производство отдельными пользователями usrabc и usrdef, следовательно, они настроили свои $ BIN, $ CFG, $ ORA_HOME, что угодно - в зависимости от их приложений.
так
- $ BIN = / opt / abc / bin # $ ABC_BIN ABC в приведенном выше сценарии
- DEF $ BIN = / opt / def / bin # $ DEF_BIN
и т.п.
Теперь разработчики могут разрабатывать ABC и DEF одновременно под своей собственной учетной записью пользователя 'justin_case', и я заставляю их использовать исходный файл (см. выше), чтобы они могли переключаться между своими настройками ENV var. ($ BIN должен указывать на $ ABC_BIN за один раз, а затем мне нужно переключиться на $ BIN = $ DEF_BIN)
теперь скрипт должен также создавать новые песочницы для параллельной разработки одного и того же приложения и т. д. Это заставляет меня делать это в интерактивном режиме, запрашивая имя песочницы и т. д.
- / Главная / justin_case / sandbox_abc_beta2
- / Главная / justin_case / sandbox_abc_r1
- / Главная / justin_case / sandbox_def_r1
Другой вариант, который я рассмотрел, - это написание псевдонимов и добавление их в профиль каждого пользователя.
- псевдоним 'setup_env =. .myscript.sh»
и запустить его с
- setup_env параметр1 ... параметрX
это имеет больше смысла для меня сейчас