Eu acho que encontrei um jeito. Eu criei um script my-init.el com este conteúdo:
bash -c "source my-init.sh > /dev/null && env | \
grep -E 'MY_ENV\=' | \
sed -e 's/\([^=]*\)=\(.*\)/(setenv \"\" \"\" \)/g'" \
> /tmp/my-init-env
source /tmp/my-init-env
Quando originado de dentro do eshell, ele iniciará um bash, originará o my-init.sh lá (configurando assim a variável MY_ENV ) e, em seguida, chamará env para obter MY_ENV e o converterá com sed para algo como (setenv "MY_VAR" "value") , que é originado no eshell original.
Não é bonito, mas faz o trabalho!