Я думаю, что это связано с тем, как вы запускаете скрипт.
Если вы это сделаете:
sh ./script.sh
Или
./script.sh
Тогда это вызывает новую оболочку, запускает скрипт, а затем возвращает вас к текущему. Итак, cd выполняется в новой оболочке, а ваш текущий нетронутый.
Попробуйте это вместо:
. ./script.sh
Что запустит script.sh в вашей текущей оболочке, а вы «Я буду держать результаты после завершения.