Qual é a diferença entre shell, console e terminal?

163

Estou confuso com a terminologia. Qual é a diferença entre shell, console e terminal?

    
por claws 24.05.2010 / 15:22

6 respostas

147

No mundo linux, todos podem parecer iguais do ponto de vista do usuário no teclado. As diferenças estão em como elas interagem umas com as outras.

O shell é o programa que realmente processa comandos e retorna a saída. A maioria das shells também gerencia processos de primeiro e segundo plano, histórico de comandos e edição de linha de comando. Esses recursos (e muitos mais) são padrão em bash , o shell mais comum em sistemas Linux modernos.

Um terminal refere-se a um programa wrapper que executa um shell. Décadas atrás, este era um dispositivo físico que consistia em pouco mais que um monitor e um teclado. Como os sistemas unix / linux adicionaram melhores sistemas de multiprocessamento e janelas, este conceito de terminal foi resumido em software. Agora você tem programas como o Terminal Gnome que abre uma janela em um ambiente de janelas do Gnome que executará um shell no qual você pode inserir comandos.

O console é um tipo especial de terminal . Historicamente, o console era um único teclado e monitor conectado a uma porta de console serial dedicada em um computador usado para comunicação direta em um nível baixo com o sistema operacional. Modernos sistemas Linux fornecem consoles virtuais . Estes são acessados através de combinações de teclas (por exemplo, Alt + F1 ou Ctrl + Alt + F1 ; a tecla de função indica diferentes consoles) que são manipulados em níveis baixos do sistema operacional linux - isso significa que não há serviço especial que precise ser instalado e configurado para ser executado. Interagir com o console também é feito usando um programa shell .

    
por 24.05.2010 / 15:37
10

Um shell é um programa que coloca um prompt e espera que você digite comandos. Ele os executa e imprime outro prompt. Então, como CMD no Windows, ou Bash no Unix. Pode ser executado em um terminal ou no console.

Um console era originalmente uma coisa física, um painel de controle. Em termos de computação, normalmente significa a exibição que você vê antes de a GUI ser iniciada ou depois de concluída; às vezes você pode alternar para exibi-lo em vez da GUI. É o lugar onde o sistema operacional imprime mensagens de erro. Em um computador multiusuário, é o monitor que está realmente conectado ao computador. Só para confundi-lo, no Windows também pode significar uma janela com um shell de comando, ou seja, um terminal.

Um terminal também era originalmente hardware, usado para se comunicar com um computador. Atualmente, geralmente se refere a uma janela com uma linha de comando (shell), que pode aparecer em uma janela da GUI ou em vez de uma GUI.

    
por 24.05.2010 / 15:39
1

Pense em outro contexto, que é desenvolvimento.
Mesmo que você não tenha um conhecimento muito profundo de desenvolvimento, provavelmente conhece o básico, ou seja: edita um programa, o submete a um compilador ou a um interpretador que constrói um aplicativo compilado.
O console é como o editor do seu programa; Ele te ajuda em escrever mas ele não executa nada: quando você terminar, você o envia para o compilador para isso.

Você pode usar seu editor preferido, vim, gedit, emacs, notepad ++, NetBeans, eclise etc.etc, mas no final eles são apenas ferramentas diferentes: se você escrever o mesmo programa, a saída será a mesma.
Nesta metáfora, o shell é o compilador. Os comandos inseridos no terminal são enviados ao shell que os interpreta e os executa imediatamente.
Então, enquanto terminais são apenas front-ends para o shell, o shell contém a linguagem atual, como acontece com o compilador.

Obviamente, um terminal não é exatamente um editor de texto, principalmente porque ele não produz um arquivo, mas envia um texto para o shell subjacente e recupera a saída dele.

E o shell não é um compilador, na verdade, ele interpreta seu comando e o executa imediatamente, em vez de criar um executável.

Mesmo com essa grande diferença, eu acho essa metáfora para ajudar muito a entender essa ideia.

    
por 21.09.2014 / 22:13
0

Realmente não há muita diferença. De volta, quando o "shell" era um programa, o "terminal" era um wrapper de frontend para este programa, e o "console" era a conexão física com o computador (teclado / tela).

Existe uma diferença dependendo do sistema operacional que você está executando. O shell "padrão" é o BASH , que normalmente está disponível em todos os tipos de Linux / Unix. O Windows usa um shell totalmente diferente.

    
por 24.05.2010 / 15:37
0

Um Terminal é uma interface baseada em texto (possivelmente para um shell)

A diferença entre console e shell é uma que eu ainda não entendi, mas posso dizer como um terminal é diferente de um shell.

O terminal é ( de acordo com a Wikipedia ) "uma interface de computador serial para entrada de texto e exibição. As informações são apresentadas como uma matriz de caracteres formados pré-selecionados ".

Você pode usar um terminal para interagir com um shell, mas também pode usá-lo para interagir com uma GUI baseada em texto , às vezes chamada de Interface do usuário final . Por exemplo:

  • Vim tem elementos GUI, incluindo números de linha e guias nomeadas
  • Nano tem elementos GUI, incluindo um menu de ajuda de comandos
  • O Tmux tem elementos GUI, incluindo uma barra de status e linhas divisórias entre os painéis
  • O Minicom tem elementos GUI, incluindo menus e uma barra de status

Em cada caso, os elementos da GUI são "desenhados" com texto em vez de pixels.

    
por 27.01.2016 / 22:26
0

Para iniciantes iniciantes

Para uma descrição mais detalhada: link

  • terminal = ambiente de entrada / saída de texto
  • console = terminal físico
  • shell = interpretador de linha de comando

Eu descreverei o caso de uso mais normal para isso no texto a seguir.

Um terminal usa um shell. Um shell pode ser executado sem um terminal.

Relacionar-se com itens do dia-a-dia:

  • Terminal - > Tela de TV em sua casa
  • Shell - > Programa que está sendo executado na tela da TV

Outra maneira de olhar para ele: seus ouvidos (entrada) e boca (saída) são os terminais para o som. Seu cérebro é o intérprete desses sons usando uma casca específica (processamento).

O terminal é para nós seres humanos, para que possamos ler e escrever para / a partir da casca. Os reservatórios podem ser executados em processos de segundo plano que não exigem interação humana, e. trabalho cron e, portanto, não requerem um terminal.

Alguns exemplos de terminais que existem:

  • Prompt de comando
  • guake
  • gnome-terminal
  • terminator

Alguns exemplos de shells existentes:

  • Bash
  • sh (shell Bourne)
  • PowerShell [windows]
  • zsh (shell Z)

Eu só escrevi como esses dois normalmente funcionam, existem outras maneiras de trabalhar, mas isso é para um usuário mais avançado.

    
por 06.03.2018 / 11:29