Eshell не устанавливает никаких переменных среды.Вы можете проверить $TERM
: он установлен на dumb
в Eshell.
Более точная проверка будет смотреть на родительский процесс скрипта
if [ -t 1 ] && [ "$TERM" = "dumb" ] && [ "$(ps -o comm= -p $PPID)" = "emacs" ]; then
echo "This looks a lot like eshell"
fi