Да, как обычно, осознание мана приходит после того, как тема создана :(
-c string If the -c option is present, then commands are read from string. If there are arguments after the
string, they are assigned to the positional parameters, starting with $0.
Таким образом, я ошибался, указывая $1, когда стоило использовать $0
Всё-таки $0 должен быть именем команды. По-другому просто неприлично по отношению к тому, кто будет код скрипта читать. Да и на проблему, указанную t.t можно нарваться.
-c string If the -c option is present, then commands are read from string. If there are arguments after the
string, they are assigned to the positional parameters, starting with $0.
-c string If the -c option is present, then commands are read from string. If there are arguments after the
string, they are assigned to the positional parameters, starting with $0.