Я же делаю экспорт переменной окружения.
Смотрите что вы делаете.
У вас есть процесс shell.
$ su -
Password:
Из него вы запустили ещё один процесс shell. Он является дочерним (child) по отношению к тому (родительскому, parent), из которого вы его запустили.
-bash-3.2# echo $SHELL
/bin/bash
Дочерний процесс получил копию всего родительского окружения.
-bash-3.2# export SHELL=/bin/zsh
-bash-3.2# echo $SHELL
/bin/zsh
Хотя вы и сделали export, но этот export приведет только к тому, что новая переменная будет доступна текущему процессу и всем его детям. Наверху, в родительском процессе, ничего не изменится.
-bash-3.2# logout
Вернулись в родительский процесс, дочерний завершился, его окружение уничтожилось.
$ su -
Password:
-bash-3.2# echo $SHELL
/bin/bash
Вы запустили новый дочерний процесс. Всё началось сначала.