Resumo para referência futura:
O shebang aponta para /bin/bash , mas o comando source faz o código ser executado em um shell atual que acabou sendo csh .
O código funciona no meu bash no Debian e não funciona no meu csh , quando invocado com source filename.sh . No entanto, parece que a intenção do OP foi executá-lo com bash .
Para que seja executado com bash como pretendido, ele precisa ser executado como executável ( chmod a+x filename.sh ) e invocado por ./filename.sh .
E finalmente, o #!/bin/bash shebang teve um caminho errado neste caso específico.