Sì, l'emulatore di terminale e la shell sono due programmi diversi. Come sapete, un esempio della differenza è che l'avvio di una finestra di terminale può eseguire shell diverse a seconda di ciò che è stato configurato (bash, tcsh, ksh, ash, persino python!).
Un'altra differenza è che ci sono più emulatori di terminali oltre a quelli predefiniti: gnome-terminal, diverse varietà di xterm, konsole (per KDE), ecc. (Vedi: http://www.howtogeek.com/howto/ubuntu/set- the-default-terminal-emulator-on-ubuntu-linux / ). Qualsiasi shell può essere eseguita in uno di questi emulatori terminali, senza troppe difficoltà.
Una terza differenza è che, oltre a eseguire i comandi della shell, è anche possibile avviare alcune applicazioni interattive nell'emulatore di terminale, che verranno eseguite nella stessa finestra (e ancora facendo affidamento sullo stesso programma di emulazione di terminale per gestire la grafica effettiva), come l'editor di testo vim, il gioco di ruolo nethack e altri. Se lo desideri, puoi impostare un profilo nell'emulatore di terminale per avviare nethack, diciamo, automaticamente quando apri una nuova scheda; nessuna shell coinvolta, ma l'emulatore di terminale è sempre lo stesso programma.
Una quarta differenza è che puoi eseguire accessi remoti, usando un programma come ssh, dall'interno di una finestra del terminale. In questo caso, la shell (o qualunque programma in esecuzione in remoto) è in esecuzione su un altro computer e il programma ssh lo collega al programma di emulazione terminale locale in esecuzione sul computer che gestisce la grafica.