O script bash é o mesmo que o shell script?

26

Sou muito novo no Ubuntu. Eu ouço as pessoas dizerem "shell script", "bash scripting".

Eu me pergunto se eles são mesmo? Ou eles são diferentes?

    
por batman 06.08.2012 / 07:57

4 respostas

32

Bash ( bash ) é um dos muitos shells Unix disponíveis (mas os mais usados). Bash significa " B ourne Um ganho SH ell", e é uma substituição / melhoria do shell Bourne original ( sh ).

O script do shell é script em qualquer shell, enquanto o script Bash é script especificamente para o Bash. Na prática, no entanto, "shell script" e "bash script" são freqüentemente usados ​​de forma intercambiável, a menos que o shell em questão não seja Bash.

EDIT: Na verdade, o shell de script padrão no Ubuntu é traço, enquanto o shell interativo padrão (o que você obtém se você puxar um terminal) é Bash. No entanto, os dois termos ainda são praticamente intercambiáveis.

    
por Hilton Shumway 06.08.2012 / 08:17
14

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 .

    
por user76204 14.08.2012 / 03:40
2
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Mar 29 11:53 /bin/sh -> dash*
$ ls -l /bin/dash
-rwxr-xr-x 1 root root 109768 Mar 29 11:53 /bin/dash*
$ ls -l /bin/bash
-rwxr-xr-x 1 root root 955024 Apr  3 08:58 /bin/bash*

Isso mostra que 'sh' é um link simbólico para 'dash', e que / bin / bash, que é o shell interativo padrão no Ubuntu, é um executável que é quase 9 vezes maior que /bin/sh.

De fato, 'man sh' (1590 linhas) vs 'man bash' (5459 linhas) revela que bash é um grande superconjunto do tradicional 'sh'.

Leia mais aqui:

por arielf 06.08.2012 / 08:51
2

Existem vários shells disponíveis para o Ubuntu, como bash , zsh , ksh , tcsh e csh .

Então, a qualquer hora que alguém disser shell , ele está falando sobre um deles. No entanto, essas camadas diferem um pouco umas das outras. Então, quando alguém fala sobre bash scripting, ele está usando um shell, mas quando alguém está falando sobre shell script, ele não está usando bash . Mas como bash é comumente usado em scripts para o Ubuntu, ele geralmente é. Além disso, as diferentes camadas são as mesmas em muitos aspectos, por isso normalmente não importa.

    
por fromnaboo 06.08.2012 / 08:48

Tags