J'ai un script 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
maintenant ces VAR sont exportés uniquement dans un sous-shell, mais je veux qu'ils soient également définis dans mon shell parent, donc quand je suis à l'invite, ces vars sont toujours définis correctement.
Je connais
. .myscript.sh
mais existe-t-il un moyen de le faire sans «sourcing»? car mes utilisateurs oublient souvent de «source».
EDIT1: supprimer la partie "exit 0" - c'était juste moi qui tape sans y penser d'abord
EDIT2: pour ajouter plus de détails sur la raison pour laquelle j'ai besoin de cela: mes développeurs écrivent du code pour (par souci de simplicité) 2 applications: ABC et DEF. chaque application est exécutée en production par des utilisateurs distincts usrabc et usrdef, donc ont configuré leurs $ BIN, $ CFG, $ ORA_HOME, peu importe - spécifiques à leurs applications.
donc
- ABC $ BIN = / opt / abc / bin # $ ABC_BIN dans le script ci-dessus
- DEF $ BIN = / opt / def / bin # $ DEF_BIN
etc.
maintenant, sur la boîte de développement, les développeurs peuvent développer à la fois ABC et DEF en même temps sous leur propre compte utilisateur 'justin_case', et je leur fais source le fichier (ci-dessus) afin qu'ils puissent changer leurs paramètres var var d'avant en arrière. ($ BIN doit pointer vers $ ABC_BIN à la fois, puis je dois passer à $ BIN = $ DEF_BIN)
maintenant, le script devrait également créer de nouveaux bacs à sable pour le développement parallèle de la même application, etc. cela me fait le faire de manière interactive, en demandant le nom du bac à sable, etc.
- / accueil / justin_case / sandbox_abc_beta2
- / accueil / justin_case / sandbox_abc_r1
- / accueil / justin_case / sandbox_def_r1
l'autre option que j'ai envisagée est d'écrire des alias et de les ajouter au profil de chaque utilisateur
- setup_env d'alias =. .myscript.sh '
et l'exécuter avec
- setup_env paramètre1 ... paramètreX
cela a plus de sens pour moi maintenant