В конце функции есть ;:
list(){ ls -a ; }
.
Синтаксис определения функции для bash указан как
name () { list ; }
Обратите внимание, что он включает в себя ;, который не является частью list.
Что требуется ; в этом месте, является разновидностью аномалии синтаксиса. Это не bash конкретный, это то же самое для ksh, но в zsh не требуется ;.