O terminal e shell são os mesmos?

27

Eu sei que isso pode soar tolo, mas eu só queria saber se há realmente uma diferença entre as duas palavras usadas no mundo Linux. Eu sei que o Shell é uma interface de linha de comando e tem muitas variantes como Bash, Korn, etc. E também sei que um Ctrl + Alt + T lança um terminal no Ubuntu. Eu só quero conectar esses dois pontos.

Significa que o terminal é a janela que se abre e o shell é o programa que corre atrás para interpretar os comandos digitados na janela? Ou eles são os mesmos em que terminal é um termo genérico usado para abstrair os conceitos de Shell, etc?

O que exatamente diferencia as duas palavras?

    
por Vamsi Emani 08.03.2012 / 13:56

3 respostas

29

O emulador de terminal (muitas vezes chamado de terminal) é "apenas a janela", sim. Ele executa um programa baseado em texto, que por padrão é o seu shell de login (que é bash no Ubuntu). Quando você digita caracteres na janela, o terminal desenha esses caracteres na janela, além de enviá-los para o stdin do shell (ou de outro programa). Os caracteres que o shell envia para stdout e stderr são enviados para o terminal, que por sua vez desenha esses caracteres na janela.

Então, sim, o shell e o emulador de terminal são programas completamente separados e podem ser usados sem o outro.

    
por geirha 08.03.2012 / 14:14
8

Eu acho que esta questão foi explorada bastante bem no site do Unix e Linux stackexchange: Diferenças entre shell, console e terminal

    
por Geeb 08.03.2012 / 15:45
3

Sim, o emulador de terminal e o shell são dois programas diferentes. Como você sabe, um exemplo da diferença é que o lançamento de uma janela de terminal pode executar shells diferentes dependendo do que você configurou (bash, tcsh, ksh, ash, até python!).

Outra diferença é que existem mais emuladores de terminal do que apenas o padrão: gnome-terminal, diversas variedades de xterm, konsole (para o KDE), etc. (veja: link ). Qualquer shell pode ser executado em qualquer um desses emuladores de terminal, sem muita dificuldade.

Uma terceira diferença é que, além de executar comandos shell, você também pode iniciar certos aplicativos interativos no emulador de terminal, e eles serão executados na mesma janela (e ainda contando com o mesmo programa emulador de terminal para manipular os gráficos reais) , como o editor de texto vim, o RPG nethack e outros. Se você quiser, pode configurar um perfil no emulador de terminal para iniciar o nethack, digamos, automaticamente quando abrir uma nova guia; nenhum shell envolvido, mas o emulador de terminal ainda é o mesmo programa.

A quarta diferença é que você pode realizar logins remotos, usando um programa como o ssh, dentro de uma janela de terminal. Neste caso, seu shell (ou qualquer programa que você rode remotamente) está rodando em outro computador, e o programa ssh o conecta ao programa emulador de terminal local rodando na sua máquina que lida com gráficos.

    
por Jonathan Cast 16.12.2014 / 18:52