Обычно это происходит, когда имя функции уже определено как псевдоним с параметрами.
Подстановка псевдонимов происходит довольно рано при разборе оболочки, поэтому она также влияет на объявления функций (как и на другие вещи). Например, если у вас было следующее ...
alias dualpush="push; push --again" dualpush() { push; push --again; }
... тогда это будет расширено до:
push; push --again() { push; push --again; }
Если исходный псевдоним заканчивается командой без параметров, все по-прежнему работает, но функция определена под неправильным именем (среди других потенциальных сюрпризов!). Однако, если последняя команда в этом псевдониме имеет несколько аргументов, то расширение больше не распознается как объявление функции - вместо этого оно ()
появляется в середине аргумента командной строки и отклоняется анализатором.