Na página de manual bash :
-c If the -c option is present, then commands are read from the first
non-option argument command_string. If there are arguments after
the command_string, they are assigned to the positional
parameters, starting with $0.
O nome do arquivo é dado a bash como um argumento usando as chaves {} , portanto, ele é atribuído a $0 . A expansão de $0 é então feita por bash anterior para chamar /bin/echo .