Não consigo reproduzir isso no Bash-3.00.16 no Solaris 10 ou no Cygwin, mas parece que o seu bash está analisando a linha 158 como uma invocação do comando ls
, e não como uma definição de função.
O prefixo "function" é opcional, mas se ele faz o seu bash aceitar a definição, então é uma solução razoável. Não altera de maneira nenhuma o significado da função.
Aliás, qual versão do OS e do Bash você está usando?
uname -a
bash --version