O script provavelmente sabe em qual shell ele deve estar sendo executado. A primeira linha pode ser algo como
#!/bin/bash
Se você executar com sh
, a primeira linha (a.k.a. shebang) será ignorada. Um shell diferente tenta executar o script, mas não o entende - é como executar o código Java em Pascal. Se você executá-lo com o shell correto, ele deve se comportar de maneira idêntica:
/bin/bash script.sh