O que é Shell e qual sua função?
November 28, 2021
O que é Shell?
Shell é um programa especial disponibilizado ao usuário ou algum programa para que este possa se comunicar diretamente com o sistema operacional. O Shell aceita comandos simples e de fácil entendimento para o usuário e os interpreta para que o Kernel possa executar as ações desejadas. É um interpretador de comandos que aceita inputs vindos do teclado ou através de arquivos.
Qual a função do Shell?
A função do Shell é executar comandos e informações para o sistema operacional. Normalmente esses comandos são enviados pelo usuário utilizando uma CLI (Command Line Interface) através de um Terminal/Command Prompt. Ele é responsável pela comunicação entre usuário e sistema operacional.
Trabalhar com o Shell pode ser complicado para iniciantes pois é dificil memorizar e entender tantos comandos de uma vez, mas esta é uma ferramenta muito poderosa e vale a pena aprender. Com os conhecidos shell scripts você é capaz de automatizar tarefas e executar comandos em sequência programada em diversas situações.
Tipos de Shell
No Linux, existem diversos tipos de Shells, o Shell padrão é o Bash, mas existem outros tipos de Shells como o Korn, o Batch, o CMD, o PowerShell, o Tcsh, o Zsh, o Fish, etc. Normalmente eles são muito similares, mas cada um possuí suas peculiaridades e recursos.
Como o shell funciona?
A implementação do shell é dividida em três partes: o parser, o executor e os shell subsystems.
O parser é o software que lê os comandos como “ls -la” recebidos através do input e os adiciona em uma estrutura de dados chamada Command Table, que guarda todos os comandos que serão executados.
O executor irá pegar a Command Table gerada pelo parser e para cada comando na array criará um novo processo para execução de cada comando. Se for necessário o executor também criará pipes para se comunicar com o output de um processo e input de outro. Também é possivel que o executor redirecione o stdin, stdout e stderr para um arquivo se houver qualquer redirecionamento.
Os shell subsystems são outros comandos e estruturas dentro da execução como: Environmet Variables, Shell Variables, History, Jobs, wildcards, subshells etc.