Olá!
O shell, interpretador de linhas de comandos, tem suas variações no universo Unix, sendo o sh o mais simples e compatível entre os sistemas Unix/Linux.
No Linux, o mais usado é o bash (Bourne-Again Shell), o qual contém um conjunto bem completo de extensões do shell (sh) e interpreta expressões regulares bem complexas, de tal forma que praticamente todos scripts feitos com bash não rodam com sh, isto é, são pouco portáveis entre sistemas Unix. Veja mais detalhes nos sites em http://aurelio.net/shell/
Respondendo sua pergunta, você fez um script bash e está tentando rodar com sh, onde a probabilidade de não rodar já foi explicada acima. Mas quando usa ./ acontece que o shell verifica na primeira linha, que tem os caracteres mágicos #!, qual é um script e qual interpretador utilizar, que, no seu caso, é o bash, daí seu script roda.
[]'s
Junior Polegato
tenho um script com permissão de execução ok , ao executar com "sh" ele não funciona (da problema na linha do if), agora se executar com "./" funciona ok... segue script abaixo :estou com o seguinte cenário..Boa noitePessoal alguem sabe, qual é a diferença de se executar um shell script com "sh" ou com "./" ?
#!/bin/bash
for var in $(seq 100) ; do
if (( $var % 2 == 0 ))
then
echo $var
fi ; done