Terminal e shell são iguais?

29

Eu sei que isso pode parecer tolice, 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.

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

O que diferencia exatamente as duas palavras?

Vamsi Emani
fonte

Respostas:

30

O emulador de terminal (geralmente chamado de terminal) é "apenas a janela", sim. Ele roda um programa baseado em texto, que por padrão é o seu shell de login (que é básico 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 gera 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.

Geirha
fonte
2
Como você pode usar o shell sem terminal?
Koray Tugay
5
@KorayTugay, quando você executa um script de shell a partir do cron ou através de um iniciador de área de trabalho (onde você não verificou "executar no terminal"), está usando um shell sem um terminal.
geirha
8

Eu acho que essa questão foi explorada minuciosamente no site de troca de pilha Unix e Linux: Diferenças entre shell, console e terminal

Geeb
fonte
3
Pode ser que você possa adicionar as partes essenciais do link em sua resposta?
jokerdino
Esta não é uma resposta, é um comentário.
Koray Tugay
6

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 e até python!).

Outra diferença é que existem mais emuladores de terminal do que apenas o padrão: gnome-terminal, várias variedades de xterm, konsole (para KDE) etc. (veja: http://www.howtogeek.com/howto/ubuntu/set- o emulador de terminal padrão no ubuntu-linux / ). 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 do shell, você também pode iniciar determinados aplicativos interativos no emulador de terminal, e eles serão executados na mesma janela (e ainda contando com o mesmo programa de emulador de terminal para lidar com os gráficos reais), como o editor de texto vim, o nethack RPG e outros. Se você quiser, poderá 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.

Uma quarta diferença é que você pode executar logins remotos, usando um programa como ssh, de dentro de uma janela do terminal. Nesse caso, seu shell (ou qualquer outro programa que você executa remotamente) está sendo executado em outro computador, e o programa ssh o conecta ao programa emulador de terminal local em execução na sua máquina que lida com gráficos.

Jonathan Cast
fonte