Pular para o conteúdo

#!/bin/bash ou #!/bin/sh ?

Responder tópico
  • Denunciar
  • Indicar
01 02

13. Re: #!/bin/bash ou #!/bin/sh ?

Enviado em 17/03/2008 - 14:49h

Diede: são MUITAS diferenças!!

Acontece que talvez a maioria use sintaxe tradicional, que funciona em qualquer shell. Tem diferença até mesmo na VERSÃO de bash!

Vou citar apenas algumas de sh para bash:

if [ $A == "teste" ]
Não funciona em sh. sh espera APENAS um = aqui e não dois. Já o bash aceita ambos.

O sh nao tem TODOS os comandos de substituição de strings que o bash tem:

A=35451565
echo ${A/5/A}
echo ${A//5/A}

O primeiro troca a primeira ocorrência de 5 por A. O segundo troca TODAS as ocorrências de 5 por A.

Ambos são ERROS DE SINTAXE em sh!

Isto são dois exemplos rápidos que pensei.
Fora a parte de arrays que o bash tem:

VET[0]=34
VET[1]=45

echo ${VET[0]}
echo ${VET[1]}

Que também são um total mistério para o sh!

Envim, são coisas COMPLETAMENTE diferentes!
O que acontece é que muitos aprenderam a programar em SHELL no tempo do sh e nunca olharam os avanços que o bash traz em termos de poderes.

Responder tópico

14. Re: #!/bin/bash ou #!/bin/sh ?

Enviado em 17/03/2008 - 14:54h

Valeu pelo toque!
Confesso que nem sabia que era possível usar arrays com com o Shell...

16. Re: #!/bin/bash ou #!/bin/sh ?

Enviado em 17/03/2008 - 15:11h

PUXA!

Pior que nem eu tinha visto que o manual de Bash que citei está em versão NOVÍSSIMA, de ONTEM, 16/Março!!

Download nele...

17. Re: #!/bin/bash ou #!/bin/sh ?

Enviado em 17/03/2008 - 15:49h

Ué Elgio. Aqui o meu pc o sh e bash funcionaram da mesmíssima forma, sem estas limitações que vc citou.

Achei estranho...

Ah, e por falar nisso, achei um site com o código do sh original:
http://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/sh/

Script para baixar o código:
#!/bin/bash

mkdir sh -p
cd sh

SOURCE=$(lynx -dump http://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/sh/ | egrep '^.{4}\.' | cut -c7- | rev | cut -c6- | rev )

for i in $SOURCE
do
wget $i
done

E executando make. Mas o código é tão antigo que não compila com o gcc atual ;-) Mas é legal para dar uma "bizóiada" hauahua


18. NÃO PODE!

Enviado em 17/03/2008 - 16:47h

estranho tenchi!

Tem certeza que tu fez os dois códigos:

#!/bin/sh
A=35451565
echo ${A/5/A}
echo ${A//5/A}

e...

#!/bin/bash
A=35451565
echo ${A/5/A}
echo ${A//5/A}


E salvou isto em arquivo, dando permissão de execução? Não vale fazer:

bash script.sh

Pois ai tu forçou o bash. Tem que dar um chmod u+x e chamar como se fosse um executável!

Pra mim, no meu UBUNTU, com bash 3 ele dá ERRO DE SINTAXE quando tem /bin/sh!

19. INACREDITAVEL

Enviado em 17/03/2008 - 16:50h

Tche, este lance do sh ser link para bash é SUPER PADRÃO!!! To tão acostumado com isto que nunca verifico.

Mas PASMEM, no meu Ubuntu, para tornar aida MAIS CONFUSO, estranho e BIZARRO:

$ file `which sh`
/bin/sh: symbolic link to `dash'

$ file `which dash`
/bin/dash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.0, dynamically linked (uses shared libs), for GNU/Linux 2.6.0, stripped


DASH???!!!!!!!

Bom, isto não muda o que eu disse de que sh tem sintaxe DIFERENTE que o bash, mas muda quando o lance é link para o bash!

20. tsctsctsctsc...

Enviado em 17/03/2008 - 16:54h

Ubuntu 6.10 (que ainda uso no meu note): sh é link para um tal de dash. Dá o erro de sintaxe.

Ubuntu 7.10: sh é link para bash (como deveria ser) e NÃO DÁ ERRO DE SINTAXE!

Ubuntu, Ubuntu... Sempre fazendo algumas lambanças pra confundir a gente (como o uso do sudo, a falta do inittab, entre outros).

Foi mal...
Mas vale o aviso: sh e bash são diferentes pois em algumas distros o sh NÃO É LINK para bash!

21. Re: #!/bin/bash ou #!/bin/sh ?

Enviado em 22/03/2008 - 18:57h

elgio Valeu pelo link ele tá me dando uma mão que nem imagina. Obrigado.

22. Re: #!/bin/bash ou #!/bin/sh ?

Enviado em 24/03/2008 - 14:28h

http://tldp.org/LDP/abs/abs-guide.pdf
Já tinha baixado esse arquivo há um tempo... muito bom!
Foi lá que, por exemplo eu descobri a variável $RANDOM

23. Re: #!/bin/bash ou #!/bin/sh ?

Enviado em 24/02/2010 - 10:46h

Pelo que li, resumindo, usar #!bin/bash é muito melhor, mais viável.
Ele possui muito mais do que o #!bin/sh precisa para programar.
01 02

Responder tópico

Responder tópico

Entre na sua conta para responder.

Fazer login para responder