Isso falha porque você incluiu $(date ...)
em \[
e \]
. Remova-os e isso deve funcionar como esperado.
\[ ... \]
, no prompt, é usado para informar ao bash que os caracteres dentro não serão adicionados ao tamanho do prompt. Você precisa deste terminal ao redor como escape 3[01;32m
, porque isso torna o texto a seguir uma cor diferente, mas esses 8 bytes não serão adicionados ao tamanho do prompt; eles são comidos pelo terminal.
Em uma nota lateral; O bash já pode colocar a data no prompt para você, sem ter que executar o comando date
.
PS1='... \D{%a %F %T %Z} ...'
Veja o link