Потому что $prefix
не является присваиванием. У @Jeff более длинное объяснение .
Вместо этого вы можете сделать то же самое с функцией:
$ prefix() { hello=hi "$@"; }
$ prefix bash -c 'echo "$hello"'
hi
...и вы даже можете сложить их, если хотите:
$ foo() { foo=123 "$@"; }
$ bar() { bar=456 "$@"; }
$ foo bar bash -c 'echo "$bar $foo"'
456 123