Saya memiliki skrip 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
sekarang VAR ini diekspor hanya dalam subkulit, tapi saya ingin mereka disetel di shell induk saya juga, jadi ketika saya meminta prompt vars itu masih diatur dengan benar.
Saya tahu tentang
. .myscript.sh
tetapi adakah cara untuk melakukannya tanpa 'sumber'? karena pengguna saya sering lupa 'sumber'.
EDIT1: menghapus bagian "keluar 0" - ini hanya saya mengetik tanpa berpikir dulu
EDIT2: untuk menambahkan lebih detail mengapa saya membutuhkan ini: pengembang saya menulis kode untuk (demi kesederhanaan) 2 aplikasi: ABC & DEF. setiap aplikasi dijalankan dalam produksi oleh pengguna terpisah usrabc dan usrdef, maka siapkan $ BIN, $ CFG, $ ORA_HOME mereka, apa pun - khusus untuk aplikasi mereka.
begitu
- $ BIN ABC = / opt / abc / bin # $ ABC_BIN dalam skrip di atas
- $ BIN DEF = / opt / def / bin # $ DEF_BIN
dll.
sekarang, di pengembang kotak dev dapat mengembangkan ABC dan DEF pada saat yang sama di bawah akun pengguna mereka sendiri 'justin_case', dan saya membuat mereka sumber file (di atas) sehingga mereka dapat beralih pengaturan var ENV mereka bolak-balik. ($ BIN harus mengarah ke $ ABC_BIN sekaligus dan kemudian saya perlu beralih ke $ BIN = $ DEF_BIN)
sekarang, skrip juga harus membuat kotak pasir baru untuk pengembangan paralel dari aplikasi yang sama, dll. ini membuat saya melakukannya secara interaktif, menanyakan nama kotak pasir, dll.
- / home / justin_case / sandbox_abc_beta2
- / home / justin_case / sandbox_abc_r1
- / home / justin_case / sandbox_def_r1
opsi lain yang saya pertimbangkan adalah menulis alias dan menambahkannya ke profil setiap pengguna
- alias 'setup_env =. .myscript.sh '
dan jalankan dengan
- setup_env parameter1 ... parameterX
ini lebih masuk akal bagi saya sekarang