Shell (computação)
As referências deste artigo necessitam de formatação. (maio de 2022) |
Esta página ou seção foi marcada para revisão devido a incoerências ou dados de confiabilidade duvidosa. |

Na informática, o shell é uma interface de usuário que permite a interação com o sistema operacional. O nome shell (em português: "casca" ou "concha") decorre do fato de ele ser a camada mais externa em torno do núcleo do sistema operacional (kernel), atuando como a "casca" que possibilita a interação segura com o sistema.[1][2]
A maioria dos shells (como Bash, Zsh e PowerShell) é de interface de linha de comando (CLI), apesar de alguns ambientes de área de trabalho trazerem shells consigo, como o GNOME e o KDE Plasma.
Visão Geral
[editar | editar código]Sistemas operacionais oferecem diversas ferramentas que seus usuários podem requisitar, como: gerenciamento de arquivos, gerenciamento de tarefas (rodar ou parar processos ou aplicativos do sistema), processamento em lotes e o monitoramento do próprio sistema (como no caso de servidores). O Shell é o programa que recebe, interpreta e executa essas requisições do usuário. A maioria dos shells não é uma interface direta para o Kernel subjacente. Na verdade, o shell atua como um programa especial que responde a uma API do próprio núcleo, utilizando-a da mesma forma que qualquer outra aplicação. Um shell gerencia a interação usuário-sistema solicitando uma entrada do usuário, interpretando essa entrada e depois gerenciando a saída do sistema operacional subjacente; atuando como um loop de leitura, execução e impressão (REPL). Por ser um programa com qualquer outro, ele pode ser substituído facilmente — prática comum em comunidades de software livre devido à variedade de shells de código aberto existentes. Entre os exemplos mais proeminentes destacam-se o GNU Bash, adotado como padrão na maioria das distribuições Linux; o Zsh, uma proposta mais moderna, popular por ter sido adotado como padrão no macOS;[3] e, mais recentemente, o Fish, que embora ainda possua uma base de usuários mais nichada, trouxe inovações significativas no realce da sintaxe, na facilidade de uso e no autocompletar interativo.
Apesar dos shells possibilitarem a interação local com o sistema operacional, existem diversas formas de permitir o acesso remoto a eles, seja por meio de modems ou protocolos de rede. Tais soluções são chamadas de acesso remoto ou administração remota. Inicialmente disponíveis em mainframes (computadores de grande porte) multiusuários, que dispunham de programas que possibilitavam que cada usuário enviasse requisições simultaneamente, o acesso remoto expandiu-se para sistemas operacionais tipo Unix, Microsoft Windows e macOS. Em sistemas tipo Unix, o protocolo de rede Secure Shell (SSH) é amplamente utilizado para acessos via interface de texto (TUI), enquanto o tunelamento SSH é utilizado para interfaces gráficas (GUIs) baseadas no X Window System. No Microsoft Windows se utiliza o Remote Desktop Protocol (RDP) para prover o acesso remoto à interface gráfica. Desde a build 1809 do Windows 10, o SSH também passou a ser aceito para acesso remoto baseado em texto via WMI, RPC e WS-Management.[4][5]
A maioria dos shells de sistema operacional hoje pertence a uma de duas categorias: Shells de Linha de Comando (CLI) e Shells Gráficos (GUI). Apesar de não serem tão comuns, outras possibilidades incluem shells baseados em comandos por voz e shells baseados em interfaces de texto que não incluem comandos, como menus baseados em texto (TUI). Os méritos de cada tipo de interface são amplamente debatidos, no entanto, a maioria dos usuários — bem como os avançados — opta por combinar ambos. A escolha depende inteiramente do perfil de cada um.
História
[editar | editar código]O primeiro shell Unix, o sh criado por Ken Thompson, foi modelado depois do shell Multics,[6] em si modelado com base no programa RUNCOM de Louis Pouzin. O sufixo 'rc' presente em alguns arquivos de configuração do unix (".vimrc", ".bashrc"), é um remanescente do ancestral RUNCOM dos shells Unix.
Quase todos os shells dos sistemas operacionais da década de 1970 podem ser usados de duas formas: interativa e modo batch(lote). O modo batch envolve estruturas, condicionais, variáveis e outros elementos de linguagem de programação; alguns tem apenas o necessário para um propósito específico, outras atendem propósitos mais diversos e sofisticados.
Shells de texto (CLI)
[editar | editar código]

A tradução de Shell para português neste caso, pode significar "concha" ou "casca". Na informática o Shell, de maneira genérica, é um programa que intermedeia o contato entre o usuário e o computador. É a interface entre o usuário e o sistema operacional (kernel). Aqui descreveremos o termo mais comum usado cotidianamente, que se refere aos interpretadores de comandos dos sistemas Unix e tipo Unix.
A interface de linha de comando (Command-line interface - CLI em inglês) é um shell do sistema operacional que utiliza caracteres alfanuméricas digitadas em um teclado para fornecer instruções e dados para o sistema operacional, de forma interativa. Por exemplo, um teletipo pode enviar códigos que representam combinações de teclas para um programa interpretador de comandos em execução no computador, o interpretador de comandos analisa a seqüência de teclas e responde com uma mensagem de erro se não puder reconhecer a sequência de caracteres, ou pode realizar algum outro programa de ação, tais como o carregamento de um programa de aplicação, listando os arquivos, login de um usuário e muitos outros. Sistemas operacionais como o UNIX tem uma grande variedade de programas shell com diferentes comandos, sintaxe e capacidades. Alguns sistemas operacionais tiveram apenas um único estilo de interface de comando, sistemas operacionais de commodities, como MS-DOS veio com uma interface de comando padrão, mas as interfaces de terceiros também foram frequentemente disponíveis, fornecendo recursos ou funções, como menuing ou execução remota de programas adicionais.
Programas de aplicação também pode implementar uma interface de linha de comando. Por exemplo, em sistemas Unix-like, o telnet programa tem uma série de comandos para controlar um link para um sistema de computador remoto. Uma vez que os comandos para o programa são teclas digitadas como os dados a serem transmitidos para um computador remoto, alguns meios de distinguir os dois são necessários. Uma sequência de escape pode ser definida, usando uma combinação de teclas especiais no local que nunca é passado, mas sempre interpretada pelo sistema local. O programa torna-se restrito, alternando entre interpretar os comandos do teclado ou passando batidas de teclas como os dados a serem processados.
Uma característica de muitos shells de linha de comando é a capacidade de salvar sequências de comandos para re-uso. Um arquivo de dados pode conter sequências de comandos que o CLI podem ser feitas a seguir como se digitado pelo usuário. Recursos especiais no CLI pode aplicar quando se está levando a cabo estas instruções armazenados. Esses arquivos em batch (arquivos de script) pode ser usado repetidamente para automatizar operações de rotina, como a inicialização de um conjunto de programas quando o sistema é reiniciado. O shell de linha de comando pode oferecer recursos como completação de linha de comando, onde o intérprete se expande comandos com base em uma entrada de alguns caracteres pelo usuário. A intérprete de linha de comando pode oferecer uma função de histórico, de modo que o usuário pode chamar comandos anteriores emitidos para o sistema e repeti-los, possivelmente com alguma edição.
Uma vez que todos os comandos para o sistema operacional tinha de ser digitado pelo usuário, nomes de comandos curtos e sistemas compactos para que representam opções do programa eram comuns. Nomes curtos eram às vezes é difícil para um usuário para se lembrar, e os sistemas de início não tinha os recursos de armazenamento para fornecer um guia de instruções do usuário on-line detalhado. Existem diversas implementações de Shell, dentre os quais podemos mencionar o csh, tcsh, sh, bash, ksh, zsh e muitos outros. Cada um pode executar comandos gerais do sistema de maneira semelhante, porém possuem estruturas e comandos próprios que os diferenciam. Outra grande diferença entre os diversos tipos de Shell são as facilidades que eles oferecem para o reaproveitamento de comandos e manipulação da linha de comandos.
Todo o usuário em sistemas Unix e similares tem um shell associado a si em seu cadastro. Podemos dizer que o Shell do usuário "fulano" é o csh, por exemplo, se este for o Shell cadastrado para o usuário. Embora o cadastro só permita associar um shell a cada usuário é muito simples passar de um shell para outro, passando a usar outro interpretador de comandos, bastando para isso chamar o outro shell desejado, da mesma maneira que qualquer comando é executado. Se um usuário, por exemplo, está no shell "sh" e executa o comando "csh", passa neste momento a usar o shell "csh" como interpretador de comandos até que saia dele com o comando "exit" ou outro comando para sair do shell.
Shells gráficos
[editar | editar código]
A interface gráfica do usuário (Graphical User Interface - GUI em inglês) representa programas e dados através de símbolos visuais em vez de texto. Interfaces gráficas tornaram-se viáveis com a diminuição do custo do hardware de computação gráfica interativa. Interfaces gráficas desenvolvem a metáfora de um "ambiente de trabalho eletrônico", onde os arquivos de dados são representados como se fossem os documentos em papel em uma mesa, e os programas de aplicação semelhante tem representações gráficas em vez de serem chamados por nomes de comandos.
Ver também
[editar | editar código]Referências
- ↑ «The Internet's fifth man», Brain scan, London: Economist Group, The Economist, 13 de dezembro de 2013,
Mr Pouzin created a program called RUNCOM that helped users automate tedious and repetitive commands. That program, which he described as a “shell” around the computer’s whirring innards, gave inspiration—and a name—to an entire class of software tools, called command-line shells, that still lurk below the surface of modern operating systems.
- ↑ Raymond, Eric S. (ed.). «shell». The Jargon File. Cópia arquivada em 5 de maio de 2026
- ↑ «MacOS 10.15 (Catalina) switches from bash to zsh». Unix Linux Community (em inglês). 25 de outubro de 2019. Consultado em 6 de julho de 2026
- ↑ 262588213843476. «How to SSH into Windows 10 or 11?». Gist (em inglês). Consultado em 5 de julho de 2026. Cópia arquivada em 5 de julho de 2026
- ↑ sdwheeler. «Running Remote Commands - PowerShell». learn.microsoft.com (em inglês). Consultado em 5 de julho de 2026. Cópia arquivada em 19 de maio de 2026
- ↑ https://www.multicians.org/unix.html