Dies geschieht normalerweise, wenn der Funktionsname bereits als Alias mit Parametern definiert ist.
Die Substitution von Aliasen tritt beim Shell-Parsing ziemlich früh auf und wirkt sich daher auch auf Funktionsdeklarationen (und andere Dinge) aus. Wenn Sie zum Beispiel Folgendes hatten:
alias dualpush="push; push --again" dualpush() { push; push --again; }
... dann würde es erweitert werden auf:
push; push --again() { push; push --again; }
Wenn der ursprüngliche Alias mit einem Befehl ohne Parameter endet, funktionieren die Dinge weiterhin, aber die Funktion ist unter einem falschen Namen definiert (unter anderem mögliche Überraschungen!). Wenn der letzte Befehl in diesem Alias jedoch einige Argumente enthält, wird die Erweiterung nicht mehr als Funktionsdeklaration erkannt. Stattdessen wird der ()
Befehl in der Mitte eines Befehlszeilenarguments angezeigt und vom Parser zurückgewiesen.