Simplificando, um terminal é um ambiente de E / S para os programas operarem, e um shell é um processador de comandos que permite a entrada de comandos para causar ações (geralmente de forma interativa e não interativa). O shell é executado dentro do terminal como um programa.
Há pouca diferença entre um shell local e um remoto, além de serem locais e remotos (e um shell remoto geralmente está conectado a um pty, embora os shells locais também possam ser).