Ao contrário de como as variáveis são acessadas, as funções são invocadas por nome sem precedê-lo com um '$'.
Você pode estar confuso sobre como na linha de comando, você pode definir uma função e invocar essa função pelo nome, mas no seu PS1 você deve colocar o comando entre parênteses precedido por um '\ $'. Colocar o nome da função em '$ (' e ')' faz com que todo o '$ (function)' seja substituído por qualquer que seja a saída padrão dessa função. Colocar a barra invertida na frente disso faz com que o seu shell avalie / execute essa função toda vez que quiser gerar $ PS1. Se você tivesse deixado a barra invertida, a função teria sido chamada apenas uma vez, quando você definiu o PS1 pela primeira vez, e qualquer que fosse a saída da função naquela primeira vez, estaria para sempre no prompt do PS1 a partir de então.