Eles provavelmente serão equivalentes se ./foo.sh
- é executável e
- começa com
#!/bin/bash
(ou equivalente)
Caso contrário, e dada a pré-condição que você descreve ( foo.sh
é um script bash), a versão ./foo.sh
pode falhar, seja porque não tem permissão de execução para o usuário, ou porque é interpretada por /bin/sh
em vez de /bin/bash
( /bin/sh
é o interpretador de scripts padrão).