Sim, sh -
e bash -
significam o mesmo.
No homem bash, há esta descrição (ênfase minha):
--
A -- signals the end of options and disables further option processing. Any arguments after the -- are treated as filenames and arguments. An argument of - is equivalent to --
Isso simplesmente significa que ele sinaliza o fim das opções e que quaisquer tokens a seguir são argumentos (não opções), mesmo que iniciem com um traço -
.
E um POSIX sh tem uma descrição semelhante .
Thus, this volume of POSIX.1-2017 allows the single to mark the end of the options, in addition to the use of the regular "--" argument, because it was considered that the older practice was so pervasive.
Este comando:
$ echo "date" | sh -
Mon Feb 12 00:00:00 UTC 2018
Mas também faz isso:
$ echo "date" | sh
Mon Feb 12 00:00:00 UTC 2018
E isso
$ echo "date" | sh -s
Mon Feb 12 00:00:00 UTC 2018
Isso deixará claro o que está sendo executado:
$ echo "date" | sh -x
+ date
Mon Feb 12 00:00:00 UTC 2018
Mas isso falhará:
$ echo "date" | sh - -x
sh: 0: Can't open -x
Isso significa que a string de data está sendo lida como um comando da entrada padrão e que o traço (-) sinaliza o fim das opções e inicia os argumentos (o mesmo que - faria).