Eu tenho um script de shell 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
agora esses VARs são exportados apenas em um subshell, mas eu quero que eles sejam definidos no meu shell pai também; portanto, quando estou no prompt, esses vars ainda estão definidos corretamente.
Eu sei sobre
. .myscript.sh
mas existe uma maneira de fazer isso sem 'terceirizar'? como meus usuários frequentemente esquecem de 'fonte'.
EDIT1: removendo a parte "exit 0" - era só eu digitando sem pensar primeiro
EDIT2: para adicionar mais detalhes sobre por que eu preciso disso: meus desenvolvedores escrevem código para (por uma questão de simplicidade) 2 aplicativos: ABC e DEF. cada aplicativo é executado em produção por usuários separados usrabc e usrdef; portanto, eles configuraram seus $ BIN, $ CFG, $ ORA_HOME, o que for - específico para seus aplicativos.
tão
- $ BIN do ABC = / opt / abc / bin # $ ABC_BIN no script acima
- $ BIN do DEF = / opt / def / bin # $ DEF_BIN
etc.
agora, na caixa de desenvolvimento, os desenvolvedores podem desenvolver o ABC e o DEF ao mesmo tempo em sua própria conta de usuário 'justin_case', e eu os faço originar o arquivo (acima) para que eles possam alternar suas configurações de ENV var. ($ BIN deve apontar para $ ABC_BIN de uma só vez e, em seguida, preciso mudar para $ BIN = $ DEF_BIN)
agora, o script também deve criar novas caixas de proteção para o desenvolvimento paralelo do mesmo aplicativo etc. Isso me faz fazê-lo interativamente, solicitando o nome da caixa de proteção etc.
- / home / justin_case / sandbox_abc_beta2
- / home / justin_case / sandbox_abc_r1
- / home / justin_case / sandbox_def_r1
a outra opção que considerei é escrever aliases e adicioná-los ao perfil de todos os usuários
- alias 'setup_env =. .myscript.sh '
e execute-o com
- setup_env parameter1 ... parameterX
isso faz mais sentido para mim agora