Shell, ou shell script, é um programa que permite o usuário acessar e enviar informações ao sistema operacional através de um terminal ou interface gráfica.
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 shell scripts você é capaz de automatizar tarefas e executar comandos em sequência programada.
O Shell é basicamente uma interface que recebe comandos para executar programas que possuem funções específicas, como por exemplo o comando ls
que lista os arquivos e diretórios do diretório atual. Imagine cada comando executado no Shell como um programa que executa uma função específica e o resultado desse programada pode ser exibido em tela ou encaminhado para outro arquivo ou programa.
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.
Qual é o Shell do Linux?
O Shell padrão do Linux é o Bash (Bourne Again Shell), ele é uma evolução do Shell Bourne (sh) desenvolvido por Stephen Bourne em 1977. O Bash foi desenvolvido por Brian Fox em 1989 e é o Shell padrão da maioria das distribuições Linux.
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.
A criação do UNIX
Neste curta metragem o time envolvido na criação do UNIX explica toda a sua estrutura e como a divisão de programas que podem ser acessados através de um shell foi uma das principais inovações do sistema operacional. Reunindo diversos nomes importantes da computação que deram início a uma das maiores revoluções tecnológicas da história, John Mashey, Brian Kernighan, Alfred Aho, Dennis Ritchie, Ken Thompson, Lorinda Cherry, detalham o processo de criação do UNIX e como ele foi um dos primeiros sistemas operacionais a utilizar o conceito de shell.