Estou confuso com a terminologia. Qual é a diferença entre shell, console e terminal?
Estou confuso com a terminologia. Qual é a diferença entre shell, console e terminal?
Respostas:
No mundo do Linux, todos podem ter a mesma aparência 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 dos 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 bash
, o shell mais comum nos modernos sistemas linux.
Um terminal refere-se a um programa wrapper que executa um shell. Décadas atrás, esse era um dispositivo físico que consistia em pouco mais que um monitor e teclado. Como os sistemas unix / linux adicionaram melhores sistemas de multiprocessamento e de janelas, esse conceito de terminal foi abstraído para o software. Agora você tem programas como o Gnome Terminal, que abre uma janela em um ambiente de janelas do Gnome, que executa 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 dedicada do console serial em um computador usado para comunicação direta em um nível baixo com o sistema operacional. Os sistemas linux modernos fornecem consoles virtuais . Eles são acessados através de combinações de teclas (por exemplo, Alt+ F1ou Ctrl+ Alt+ F1; as teclas de função numeram consoles diferentes) que são tratadas em níveis baixos do sistema operacional linux - isso significa que não há nenhum serviço especial que precise ser instalado e configurado para executar . A interação com o console também é feita usando um programa shell .
Um shell é um programa que exibe um prompt e espera que você digite comandos. Ele os executa e depois imprime outro prompt. Então, como o CMD no Windows ou o 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, geralmente significa a exibição que você vê antes da GUI iniciar ou depois de terminar; às vezes você pode mudar para exibi-lo em vez da GUI. É o local em que o sistema operacional imprime mensagens de erro. Em um computador multiusuário, é a tela realmente conectada ao computador. Só para confundir você, 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.
A diferença entre console e shell é uma que ainda não compreendo, mas posso dizer como um terminal é diferente de um shell.
O terminal é (de acordo com a Wikipedia ) "uma interface serial de computador para entrada e exibição de texto. 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 interagir com uma GUI baseada em texto , às vezes chamada de Interface do Usuário do Terminal . Por exemplo:
Em cada caso, os elementos da GUI são "desenhados" com texto em vez de pixels.
Para uma descrição mais detalhada: https://askubuntu.com/a/506628/130518
Descreverei o caso de uso mais normal para isso no texto a seguir.
Um terminal usa um shell. Um shell pode funcionar sem um terminal.
Para se relacionar com itens do cotidiano:
Outra maneira de ver isso: seus ouvidos (entrada) e boca (saída) são os terminais para o som. Seu cérebro é o intérprete desses sons usando um shell específico (processamento).
O terminal é para nós, humanos, para que possamos ler e escrever de / para o shell. Os shells podem ser executados em processos em segundo plano que não exigem interação humana, por exemplo, trabalho cron e, portanto, não requerem um terminal.
Poucos exemplos de terminais que existem:
Poucos exemplos de conchas que existem:
Eu escrevi apenas como esses dois normalmente funcionam, existem outras maneiras de trabalhar, mas isso é para um usuário mais avançado.
Pense em outro contexto, que é desenvolvimento.
Mesmo que você não tenha um conhecimento muito profundo do desenvolvimento, provavelmente conhece o básico, ou seja: edita um programa, envia-o a um compilador ou a um intérprete que cria um aplicativo compilado.
O console é como o editor do seu programa; ajuda você a escrever, mas na verdade não executa nada: quando você termina, envia para o compilador.
Você pode usar seu editor preferido, vim, gedit, emacs, bloco de notas ++, Netbeans, eclise etc.etc, mas no final 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.
Portanto, enquanto os terminais são apenas front-ends para o shell, o shell contém o idioma real, como acontece no compilador.
Obviamente, um terminal não é exatamente um editor de texto, principalmente porque não produz um arquivo, mas envia texto ao 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, acho que essa metáfora ajuda muito na compreensão dessa idéia.
Realmente não há muita diferença. No passado, quando o "shell" era um programa, o "terminal" era um invólucro de interface para esse programa, e o "console" era a conexão física com o computador (teclado / tela).
Há uma diferença dependendo do SO 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.
prompt
e atécommand line
?