Eles não são. Existem algumas coisas que não funcionam. A única coisa que vem à mente é:
sh myscript -flag1 -value=3
não é possível com sh < myscript .
Com sh < myscript , $ 0 está definido como sh , em vez de myscript , então
echo this script is $0
não funciona
Além disso, se o seu script ler a entrada, não funcionará - você não pode
sh < myscript < myfiletoread