Дело еще в том, что я плохо ориентируюсь в документации линукса/юникса... Т.е. для меня очевидным становится что нужно было смотреть об этом в документации по bash, после того как мне подсказали, а самому додуматься до этого не получается) Что поделать - windows культура. Буду исправляться.
ну как в любой ОС, в линуксе есть два вида команд:
1. команды, которые выполняет оболочка(bash). в разных MS-DOS это "резидентные".
справка по ним как и в венде help command. например попробуйте
2. команды, которые не выполняются оболочкой. По ним справка man command. Это обычные файлы, и у вас есть право их выполнять. Список каталогов, где они находятся в $PATH.
Есть и более подробная документация, причём часто с приколами. Называется info.
т.е. запустив bash еще раз, и увидев что переменная окружения стала доступна.. понял, что я просто не понимаю как это все работает и пошел разбираться
1. сначала выполняется команда eval. Эта команда встроенная в bash. Она принимает как аргумент одну строку, а затем её выполняет. Строка у вас $SHELL -l.
2. перед выполнением eval, её параметры обрабатываются оболочкой. В данном случае строка "$SHELL -l" превращается в "/bin/bash -l"
(ВАЖНО: используйте кавычки. Баш очень любит раскрывать разные символы, причём делает это часто непредсказуемо!)
3. /bin/bash с опцией -l приводит к тому, что выполняется bash, но не как обычная подоболочка, а как будто-бы сразу после логина и пароля. Именно потому-то вы увидите работу ~/.bash_login
4. Теперь вы внутри оболочки, которая внутри другой оболочки. Файл ~/.bash_login выполнен, и переменные (экспортированные) доступны.
5. по команде exit вы увидите сообщение logout, и вернётесь в родительскую оболочку
6. по второй команде exit эта оболочка напишет вам уже exit,
7. но вы этого не увидите, потому-что окошко уже закрылось 
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)

