./myscript
runs myscript
com qualquer intérprete especificado no shebang. myscript
precisa ter o bit executável definido.
bash ./myscript
corre myscript
com o bash. myscript
não precisa ser executável, e como o bash recebe um arquivo para ser executado, ele nem está procurando por ele no PATH, então bash myscript
funcionará tão bem.
bash -c "./myscript"
inicia uma instância do bash para executar um comando, o que acontece para fazê-lo executar ./myscript
com qualquer interpretador especificado no shebang (portanto, é semelhante ao primeiro caso, com um processo bash adicionado). O argumento para bash -c
é qualquer comando bash ou sequência de comandos (tente bash -c "echo 'aa';echo 'bb'"
).
E você não mencionou . ./myscript