Oui, l'émulateur de terminal et le shell sont deux programmes différents. Comme vous le savez, un exemple de la différence est que le lancement d'une fenêtre de terminal peut exécuter différents shells en fonction de ce que vous avez configuré (bash, tcsh, ksh, ash, même python!).
Une autre différence est qu'il y a plus d'émulateurs de terminaux que les seuls par défaut: gnome-terminal, plusieurs variétés de xterm, konsole (pour KDE), etc. (voir: http://www.howtogeek.com/howto/ubuntu/set- l'émulateur de terminal par défaut sur ubuntu-linux / ). Tout shell peut être exécuté dans n'importe lequel de ces émulateurs de terminaux, sans trop de difficulté.
Une troisième différence est que, en plus d'exécuter des commandes shell, vous pouvez également démarrer certaines applications interactives dans votre émulateur de terminal, et elles s'exécuteront dans la même fenêtre (et en s'appuyant toujours sur le même programme d'émulateur de terminal pour gérer les graphiques réels), telles que l'éditeur de texte vim, le RPG nethack et autres. Si vous le souhaitez, vous pouvez configurer un profil dans votre émulateur de terminal pour démarrer nethack, disons, automatiquement lorsque vous ouvrez un nouvel onglet; aucun shell impliqué, mais l'émulateur de terminal est toujours le même programme.
Une quatrième différence est que vous pouvez effectuer des connexions à distance, à l'aide d'un programme comme ssh, depuis l'intérieur d'une fenêtre de terminal. Dans ce cas, votre shell (ou tout autre programme que vous exécutez à distance) s'exécute sur un autre ordinateur et le programme ssh le connecte au programme d'émulateur de terminal local exécuté sur votre machine qui gère les graphiques.