Shell (computação) - Shell (computing)

Uma interface gráfica do final dos anos 1980, que apresenta uma janela TUI para uma página de manual , uma janela em forma (oclock), bem como várias janelas iconizadas . No canto inferior direito, podemos ver um emulador de terminal rodando um shell Unix , no qual o usuário pode digitar comandos como se estivessem em um terminal .

Na computação , um shell é um programa de computador que expõe os serviços de um sistema operacional a um usuário humano ou outro programa. Em geral, os shells do sistema operacional usam uma interface de linha de comando (CLI) ou uma interface gráfica de usuário (GUI), dependendo da função de um computador e de uma operação específica. É denominado shell porque é a camada mais externa ao redor do sistema operacional.

Os shells de linha de comando exigem que o usuário esteja familiarizado com os comandos e sua sintaxe de chamada e que entenda conceitos sobre a linguagem de script específica do shell (por exemplo, bash ).

Os shells gráficos representam uma baixa carga para os usuários de computador iniciantes e são caracterizados por serem fáceis de usar. Uma vez que eles também vêm com certas desvantagens, a maioria dos sistemas operacionais habilitados para GUI também fornece shells CLI.

Visão geral

Os sistemas operacionais fornecem vários serviços aos seus usuários, incluindo gerenciamento de arquivos , gerenciamento de processos (execução e encerramento de aplicativos ), processamento em lote e monitoramento e configuração do sistema operacional.

A maioria dos shells do sistema operacional não são interfaces diretas com o kernel subjacente, mesmo se um shell se comunicar com o usuário por meio de dispositivos periféricos conectados diretamente ao computador. Os shells são, na verdade, aplicativos especiais que usam a API do kernel da mesma maneira que são usados ​​por outros programas de aplicativos. Um shell gerencia a interação do usuário com o sistema solicitando a entrada dos usuários, interpretando sua entrada e, em seguida, manipulando uma saída do sistema operacional subjacente (como um loop de leitura-avaliação-impressão, REPL ). Como o shell do sistema operacional é na verdade um aplicativo, ele pode ser facilmente substituído por outro aplicativo semelhante, para a maioria dos sistemas operacionais.

Além de shells em execução em sistemas locais, existem diferentes maneiras de disponibilizar sistemas remotos para usuários locais; tais abordagens são geralmente chamadas de acesso remoto ou administração remota. Inicialmente disponível em mainframes multiusuário , que forneciam interfaces de usuário baseadas em texto para cada usuário ativo simultaneamente por meio de um terminal de texto conectado ao mainframe via linha serial ou modem , o acesso remoto se estendeu a sistemas do tipo Unix e Microsoft Windows. Em sistemas semelhantes ao Unix, o protocolo Secure Shell é geralmente usado para shells baseados em texto, enquanto o encapsulamento SSH pode ser usado para interfaces gráficas de usuário (GUIs) baseadas no X Window System. No Microsoft Windows, o Remote Desktop Protocol pode ser usado para fornecer acesso remoto GUI e, desde o Windows Vista , o PowerShell Remote pode ser usado para acesso remoto baseado em texto via WMI, RPC e WS-Management.

A maioria dos shells de sistema operacional se enquadra em uma de duas categorias - linha de comando e gráfico. Os shells de linha de comando fornecem uma interface de linha de comando (CLI) para o sistema operacional, enquanto os shells gráficos fornecem uma interface gráfica de usuário (GUI). Outras possibilidades, embora não tão comuns, incluem interface de usuário de voz e várias implementações de uma interface de usuário baseada em texto (TUI) que não são CLI. Os méritos relativos dos shells baseados em CLI e GUI são frequentemente debatidos.

Shell de linha de comando

Prompt de comando , um shell CLI no Windows
Bash , um shell Unix amplamente adotado

Uma interface de linha de comando (CLI) é um shell de sistema operacional que usa caracteres alfanuméricos digitados em um teclado para fornecer instruções e dados ao sistema operacional, de forma interativa. Por exemplo, um teletipo pode enviar códigos que representam pressionamentos de tecla para um programa interpretador de comandos em execução no computador; o interpretador de comandos analisa a sequência de pressionamentos de tecla e responde com uma mensagem de erro se não puder reconhecer a sequência de caracteres ou pode realizar alguma outra ação do programa, como carregar um programa aplicativo, listar arquivos, efetuar login de um usuário e muitos outros. Os sistemas operacionais como o UNIX têm uma grande variedade de programas de shell com diferentes comandos, sintaxe e recursos, com o shell POSIX sendo a linha de base. Alguns sistemas operacionais tinham apenas um único estilo de interface de comando; sistemas operacionais comuns, como o MS-DOS, vinham com uma interface de comando padrão ( COMMAND.COM ), mas as interfaces de terceiros também estavam frequentemente disponíveis, fornecendo recursos ou funções adicionais, como menus ou execução remota de programas.

Os programas aplicativos também podem implementar uma interface de linha de comando. Por exemplo, em sistemas semelhantes ao Unix, o programa telnet possui vários comandos para controlar um link para um sistema de computador remoto. Uma vez que os comandos para o programa são feitos com as mesmas teclas que os dados que estão sendo enviados para um computador remoto, alguns meios de distinguir os dois são necessários. Uma seqüência de escape pode ser definida, usando um pressionamento de tecla local especial que nunca é passado adiante, mas sempre interpretado pelo sistema local. O programa torna-se modal, alternando entre interpretar comandos do teclado ou passar as teclas pressionadas como dados a serem processados.

Um recurso de muitos shells de linha de comando é a capacidade de salvar sequências de comandos para reutilização. Um arquivo de dados pode conter sequências de comandos que a CLI pode seguir como se fossem digitados por um usuário. Os recursos especiais da CLI podem ser aplicados durante a execução dessas instruções armazenadas. Esses arquivos em lote ( arquivos de script) podem ser usados ​​repetidamente para automatizar operações de rotina, como inicializar um conjunto de programas quando um sistema é reiniciado. O uso de shells no modo em lote geralmente envolve estruturas, condicionais, variáveis ​​e outros elementos de linguagens de programação; alguns têm os fundamentos básicos necessários para tal propósito, outros são linguagens de programação muito sofisticadas por si mesmas. Por outro lado, algumas linguagens de programação podem ser usadas interativamente a partir de um shell de sistema operacional ou em um programa criado para esse fim.

O shell da linha de comando pode oferecer recursos como completamento da linha de comando , onde o interpretador expande os comandos com base em alguns caracteres inseridos pelo usuário. Um interpretador de linha de comando pode oferecer uma função de histórico, para que o usuário possa recuperar comandos anteriores emitidos para o sistema e repeti-los, possivelmente com alguma edição. Uma vez que todos os comandos do sistema operacional precisavam ser digitados pelo usuário, nomes de comandos curtos e sistemas compactos para representar as opções do programa eram comuns. Às vezes, os nomes curtos eram difíceis de serem lembrados pelo usuário, e os primeiros sistemas não tinham os recursos de armazenamento para fornecer um guia de instruções do usuário on-line detalhado.

Conchas gráficas

Uma interface gráfica de usuário (GUI) fornece meios para manipular programas graficamente, permitindo operações como abrir, fechar, mover e redimensionar janelas , bem como alternar o foco entre as janelas. Os shells gráficos podem ser incluídos com ambientes de desktop ou vir separadamente, mesmo como um conjunto de utilitários fracamente acoplados.

A maioria das interfaces gráficas de usuário desenvolve a metáfora de uma "área de trabalho eletrônica" , em que os arquivos de dados são representados como se fossem documentos em papel em uma mesa, e os programas de aplicativos têm representações gráficas em vez de serem invocados por nomes de comandos.

Sistemas tipo Unix

Operação de arrastar e soltar realizada em um grupo de arquivos entre o KDesktop e o Konqueror no KDE

Os shells gráficos normalmente são construídos em cima de um sistema de janelas . No caso do X Window System ou Wayland , o shell consiste em um gerenciador de janelas X ou um compositor Wayland , respectivamente, bem como em um ou vários programas que fornecem a funcionalidade para iniciar aplicativos instalados, para gerenciar janelas abertas e desktops virtuais, e frequentemente para oferecer suporte a um mecanismo de widget.

No caso do macOS , o Quartz pode ser considerado o sistema de janelas e o shell consiste no Finder , no Dock , no SystemUIServer e no Mission Control .

Microsoft Windows

As versões modernas do sistema operacional Microsoft Windows usam o shell do Windows como seu shell. O Windows Shell oferece ambiente de área de trabalho , menu iniciar e barra de tarefas , bem como uma interface gráfica do usuário para acessar as funções de gerenciamento de arquivos do sistema operacional. As versões mais antigas também incluem o Gerenciador de programas , que era o shell para a série 3.x do Microsoft Windows e que, na verdade, vinha com as versões posteriores do Windows dos tipos 95 e NT, pelo menos por meio do Windows XP. As interfaces das versões 1 e 2 do Windows eram bastante diferentes.

Os aplicativos de desktop também são considerados shells, desde que usem um mecanismo de terceiros. Da mesma forma, muitos indivíduos e desenvolvedores insatisfeitos com a interface do Windows Explorer desenvolveram um software que altera o funcionamento e a aparência do shell ou o substitui inteiramente. WindowBlinds by StarDock é um bom exemplo do primeiro tipo de aplicativo. LiteStep e Emerge Desktop são bons exemplos do último.

Os programas de interoperabilidade e o software projetado para fins específicos permitem que os usuários do Windows usem equivalentes de muitas das várias GUIs baseadas em Unix discutidas abaixo, bem como o Macintosh. Um equivalente do OS / 2 Presentation Manager para versão 3.0 pode executar alguns programas OS / 2 sob algumas condições usando o subsistema ambiental OS / 2 em versões do Windows NT.

Outros usos

"Shell" também é usado vagamente para descrever software aplicativo que é "construído em torno" de um componente específico, como navegadores da web e clientes de e-mail, em analogia aos shells encontrados na natureza. Na verdade, o shell (linha de comando) encapsula o kernel do sistema operacional . Às vezes, eles também são chamados de "invólucros".

Em sistemas especialistas , um shell é um pedaço de software que é um sistema especialista "vazio" sem a base de conhecimento para qualquer aplicativo específico.

Veja também

Referências