TL:DR
Shell - Entrada para comunicação com o Kernel. Onde os comandos são executados.
Terminal - É o programa que roda um shell. Gnome Terminal, xTerm, iTerm2 por exemplo.
Console ou CLI (Command Line Interface) - Abstração usada para se referir a um terminal + shell ou console tty.
Shell
É um programa utilizado para processar comandos e trazer os resultados do mesmo. Basicamente ele serve para interagirmos com o kernel do sistema operacional de forma mais abstrata, menos low-level.
Terminal
É um programa que roda um shell. Outrora eram equipamentos com capacidade mínima de processamento onde eram realizadas conexões a um computador remoto. Para diferenciar basta se lembrar que terminal indica o ponto final de algo por exemplo, no caso onde acontecem a entrada e saída dos dados para o computador.
Console ou CLI (Command Line)
São abstrações que indicam a utilização de um terminal+shell. No Linux console pode ainda indicar terminais, 6 por padrão, implementados diretamente pelo kernel. Podemos acessá-los usando os atalhos CTRL + ALT + F/n, exemplo o /dev/tty1 pode ser acessado com CTRL + ALT + F1, enquanto o atalhos CTRL + ALT + F7 traz você de volta para o modo gráfico.
Bônus :)
Vamos entender a diferença entre Login Shell vs Interactive Shell vs Non-Interactive Shell.
Login Shell
É um shell usado para o login. Pode ser acessado por terminal ou ssh por exemplo. Ele executa arquivos mínimos de configuração para podermos utilizar o sistema. Outro exemplo é você acessar seu console 1 ou /dev/tty1 como nos exemplos acima.
Interactive Shell
É o shell que você executa, por exemplo após o login, como por exemplo o bash. Daí você me pergunta: “Ah mas eu não executei nada após o login, estou em um shell de login ou interativo?”, a resposta é que você está em um shell de login/interativo. Outro exemplo é abrir um novo terminal.
Non-Interactive Shell
É um shell que não tem interação com o usuário. É raro de encontrar e não convém ao nosso cenário no momento.
Por hoje é isso pessoal!
Obrigado pela visita, deixe seu like e siga para novos artigos sobre Desenvolvimento de Sistemas.
@feiler no Twitter
Top comments (1)
Oi, tudo bem? Muito prático seu post ;)