Novamente surgem termos que podem ser estranhos ao nosso vocabulário.
Sintaxe e interpretador de comandos?
Sem pretensões heróicas, este artigo pode salvar dos efeitos da obscurantismo... Pois então, vamos a mais uma missão possível...
O que é Sintaxe?
O significado do termo sintaxe referente às linguagens de programação é plenamente equiparável ao sentido dado ao mesmo em relação à comunicação humana. Você, se não sabia, desconfiava e muito disso. :)
Analogamente, assim como cada idioma humano escrito tem seu conjunto de regras fixas chamado costumeiramente de gramática, cada linguagem de programação tem as suas as quais chamamos de sintaxe.
Uma metamorfose ambulante chamada Shell
Se um nome diz muito sobre algo, a "limitação" dos recursos que uma linguagem de programação utiliza/manipula e/ou é destinado, ou seja, os objetivos para qual foi projetada ("core" de trabalho) são pontos altamente consideráveis.
Por exemplo, citaremos o PHP, sigla que originalmente significava Personal Home Page, e que hoje é um um acrônimo recursivo para PHP: Hypertext Preprocessor devido à evolução de seu core.
No caso Shell, a sintaxe usada por um interpretador de comandos, que é o tradutor entre o sistema operacional e o usuário, é (em minha opinião), muito levada em consideração como caracterizador do mesmo.
Expandindo a explicação sobre este conceito reafirmo que a sintaxe é um determinante dos tipos de shell; é um fator usado para as denominar. A quantidade de recebimento ou não de herança de sintaxe e core entre elas e outras linguagens que originalmente não tenham sido criadas para serem utilizadas em Shells Scripts é também é considerada.
Para ficar mais clara esta afirmação, entre os muitos tipos de shell, serão citados aqui, resumidamente por economia de espaço e manutenção de foco, mas procurando seguir uma sequência cronológica motivada pela importância histórica para os sistemas
GNU/Linux atuais, apenas alguns. Ei-los;
Nota: patches são altamente desejáveis para este tópico nos comentários, pois só usei bash/sh até hoje :(
Bourne shell (.sh)
Desenvolvido em 1977 por Stephen Bourne dos laboratórios AT&T. Por muito tempo foi o shell padrão de usuários em sistemas Unix. É a Shell padrão do super usuário (root) nas implementações *nix atuais.
Cshell (C Shell - .csh)
Como seu nome sugere, ela usa um modelo de sintaxe baseado na linguagem C. Talvez por ignorar o legado de facilidades didáticas do .sh está cada vez mais fora de uso no GNU/Linux. É mais utilizado em ambientes *BSD e Xenix.
Korn shell (.ksh)
Baseado no código do Cshell, foi o primeiro shell a introduzir recursos avançados.
Bash (Bourne again shell - .sh)
Atualmente é o mais poderoso e mais utilizado interpretador para Shell em sistemas GNU/Linux. Desenvolvido para o projeto GNU é o padrão de várias distribuições Linux. É compatível com o Bourne shell, além de incorporar os melhores recursos do C shell e do Korn Shell e adicionar outros consecutivamente a cada nova versão.
Devido a estas qualidades (herança de recursos manipuláveis e de sintaxe e amplo uso no GNU/Linux) esta será a gramática (tipo de shell e portanto a sintaxe) a ser estudada por nós no decorrer de nossos artigos.
Além disso, Shells Scripts, especialmente os escritos para bash, possuem um core de objetivo geral limitado apenas pelos recursos que o sistema oferece (comandos) e estes mesmos sujeitos a ampliação se aliados à criatividade e conhecimento do programador pela possibilidade de adicionar novos recursos ao mesmo (novos comandos), claro, paridas de acordo com o surgimento de novas necessidades à serem solucionadas. Logo a potencialidade evolutiva de seus super poderes (tanto do sistema quanto do programador) são óbvios.
Além destas vantagens e outras que tenho como presunção posteriormente explicar em outros artigos (se Deus quiser), Shells Scripts, oferecerem eficiência devastadora também em prototipagem.