Tengo un 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
ahora estos VAR se exportan solo en un subshell, pero quiero que se establezcan también en mi shell principal, por lo que cuando estoy en el indicador, esos vars todavía están configurados correctamente.
Se acerca de
. .myscript.sh
pero ¿hay alguna manera de hacerlo sin 'abastecimiento'? como mis usuarios a menudo se olvidan de 'fuente'.
EDITAR1: eliminando la parte "salir 0" - esto fue solo yo escribiendo sin pensar primero
EDIT2: para agregar más detalles sobre por qué necesito esto: mis desarrolladores escriben código para (por simplicidad) 2 aplicaciones: ABC y DEF. cada aplicación se ejecuta en producción por usuarios separados usrabc y usrdef, por lo tanto, han configurado sus $ BIN, $ CFG, $ ORA_HOME, lo que sea, específico para sus aplicaciones.
entonces
- $ BIN de ABC = / opt / abc / bin # $ ABC_BIN en el script anterior
- $ BIN de DEF = / opt / def / bin # $ DEF_BIN
etc.
ahora, en el cuadro de desarrollo, los desarrolladores pueden desarrollar tanto ABC como DEF al mismo tiempo bajo su propia cuenta de usuario 'justin_case', y hago que obtengan el archivo (arriba) para que puedan cambiar sus configuraciones de ENV var. ($ BIN debe apuntar a $ ABC_BIN a la vez y luego necesito cambiar a $ BIN = $ DEF_BIN)
ahora, el script también debería crear nuevos sandboxes para el desarrollo paralelo de la misma aplicación, etc., esto me hace hacerlo interactivamente, pidiendo el nombre del sandbox, etc.
- / home / justin_case / sandbox_abc_beta2
- / home / justin_case / sandbox_abc_r1
- / home / justin_case / sandbox_def_r1
la otra opción que he considerado es escribir alias y agregarlos al perfil de cada usuario
- alias 'setup_env =. .myscript.sh '
y ejecutarlo con
- setup_env parámetro1 ... parámetroX
esto tiene más sentido para mí ahora