Co prawda specjalistą nie jestem, ale i tak odpowiem
W normalnych warunkach bash wykonuje skrypty w swojej “izolowanej” kopii - dlatego nie zapamiętuje nie tylko ostatniego położenia, ale też zawartości użytych wewnątrz skryptu zmiennych. Nie ma wiele możliwości na obejście tego faktu - jedyny z jakim się spotkałem, to zmusić bash do wykonania skryptu “w sobie”, np. poprzez uruchamianie go z kropką przed nazwą:
. nazwa_skryptu
Zaznaczam, że takie wykonanie nieznanego (lub po prostu niesprawdzonego pod kątem błędów) skryptu jest, delikatnie mówiąc, lekkomyślne. Należy przy tym pamiętać, że wszystkie zdefiniowane/zmienione w skrypcie zmienne zostaną zapamiętane w powłoce - ze wszystkimi tego konsekwencjami.
Tak na marginesie - jeżeli przewidujesz, że skrypt ma być uruchamiany w ten sposób - uważaj jakich używasz w nim poleceń - np. nieodpowiednio użyte “exit” zamiast zakończenia skryptu spowoduje wylogowanie…