Introdução
Os scripts de shell e Bash
scripting não são a mesma coisa, pois existem outros shells, como sh
, que podem ser usados para executar um script; um script destinado a ser executado por Bash
deve ser rotulado como um script Bash
. Os termos geralmente são usados de forma intercambiável porque Bash
, com sua funcionalidade estendida em comparação com sh
, é o mais comumente usado para executar scripts de usuário em muitas distribuições. No entanto, existem outros shells, como Korn (ksh)
, C shell (csh)
e Z shell (zsh)
, mas não vamos entrar neles aqui, uma vez que a discussão sobre sh
e bash
é mais relevante para o Ubuntu. Um ótimo artigo da IBM aqui entra em mais detalhes sobre a evolução dos shells no Linux e descreve bem a arquitetura do shell e como os shells diferem.
Script de shell
Sh
foi o shell original do Unix desenvolvido por Stephen Bourne; no entanto, os sistemas baseados em Debian e o Ubuntu consideram dash
como seu sh
shell ( sh
é, na verdade, linkado com symlink para dash
). No Debian e no Ubuntu, por causa da velocidade de sh
, é mais usado para procedimentos críticos do sistema e para a execução de scripts chave na inicialização; para mais detalhes, veja o wiki do Ubuntu . Bash
significa o Bourne Again SHell e foi desenvolvido mais tarde por Brian Fox e estendeu muito o original sh
. Fox e outros desenvolvedores de Bash
foram uma parte importante do projeto GNU. Consulte esta grande discussão sobre o histórico de Bash
para obter mais informações.
É importante observar que sh
e Bash
, como usado no Ubuntu e em outras distribuições, são POSIX
compliant, o que significa que eles assinam vários padrões sobre como os comandos são executados no Shell. Isso serve para garantir que os resultados dos scripts usados no sistema operacional possam ser previstos de maneira confiável e que o comportamento do shell possa ser mantido dentro desses parâmetros POSIX
, pois isso é particularmente importante para os desenvolvedores. Para obter mais informações sobre os padrões, consulte a documentação oficial .
Geralmente, os scripts de shell têm o sufixo .sh
, mesmo que eles sejam executados como bash
scripts e tenham #!/bin/bash
na parte superior do script. Na verdade, não importa se o script é chamado script.sh ou meu.script , o que importa é se a chamada para o interpretador é /bin/sh
ou /bin/bash
. Os scripts de shell também podem ser chamados na linha de comando com sh
ou bash
.
No entanto, é importante observar que os resultados podem ser diferentes dependendo de qual interpretador é chamado, pois nem todos os comandos bash
funcionarão em sh
, enquanto a maioria dos comandos sh
funcionará em bash
. Em geral, a maioria dos usuários desejará usar /bin/bash
para seus scripts, para que possam aproveitar o conjunto de recursos estendidos; scripts do sistema podem ser executados com /bin/sh
, se necessário.
Recursos para o script Bash Shell
Às vezes, é difícil encontrar recursos úteis on-line que sigam as boas práticas e que ofereçam conselhos que permitam criar scripts úteis. Depois de man bash
, alguns dos recursos mais importantes são o wiki de Greg, Bash hackers e o recente livro de Steve Parker sobre shell scripting que se concentra principalmente em Bash
e é publicado pela O'Reilly. Uma boa introdução também é realizada pelo Guia do iniciante do Bash .