Не припомню, чтобы это когда-нибудь работало. Сначала парсится вся команда, выполняются подстановки, а уже потом выполняется присваивание в левой части. Чтобы это заработало, нужно как-то так:
Shell
$ FOO=bar bash -c 'echo $FOO'
Только что проверил в bash 4.0 с древнего sysrcd. Всё точно так же, как и в современных версиях.
/dev/random
Видимо я раньше делал `FOO=bar && echo ${FOO}`, либо обращался к значению переменной внутри запускаемого приложения: `FOO=bar ./use-foo-variable.sh`