Ho una sceneggiatura della 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
ora questi VAR vengono esportati solo in una subshell, ma voglio che siano impostati anche nella mia shell genitore, quindi quando sono al prompt quei vars sono ancora impostati correttamente.
Lo so
. .myscript.sh
ma c'è un modo per farlo senza "approvvigionamento"? come i miei utenti spesso dimenticano di "fonte".
EDIT1: rimuovere la parte "exit 0" - ero solo io a digitare senza pensare prima
EDIT2: per aggiungere maggiori dettagli sul perché ho bisogno di questo: i miei sviluppatori scrivono codice per (per semplicità) 2 app: ABC e DEF. ogni app viene eseguita in produzione da utenti separati usrabc e usrdef, quindi hanno impostato i loro $ BIN, $ CFG, $ ORA_HOME, qualunque cosa - specifici per le loro app.
così
- ABC $ BIN = / opt / abc / bin # $ ABC_BIN nello script sopra
- $ BIN di DEF = / opt / def / bin # $ DEF_BIN
eccetera.
ora, sulla scatola degli sviluppatori gli sviluppatori possono sviluppare contemporaneamente sia ABC che DEF con il proprio account utente 'justin_case', e li faccio sorgente del file (sopra) in modo che possano cambiare le loro impostazioni var ENV avanti e indietro. ($ BIN dovrebbe puntare a $ ABC_BIN alla volta e quindi devo passare a $ BIN = $ DEF_BIN)
ora, lo script dovrebbe anche creare nuovi sandbox per lo sviluppo parallelo della stessa app, ecc. Questo mi fa fare in modo interattivo, chiedendo il nome sandbox, ecc.
- / Home / justin_case / sandbox_abc_beta2
- / Home / justin_case / sandbox_abc_r1
- / Home / justin_case / sandbox_def_r1
l'altra opzione che ho preso in considerazione è scrivere alias e aggiungerli al profilo di ogni utente
- alias 'setup_env =. .myscript.sh'
ed eseguirlo con
- setup_env parametro1 ... parametroX
questo ha più senso per me ora