Resolvido.
Novo prompt (com \ u @ \ h adicionado, já que esqueci isso) é
export PS1="\e[0;1m\u@\h]\'if [ $? = 0 ]; then echo \[\e[33m\]':)'\[\e[0m\]; else echo \[\e[31m\]':('\[\e[0m\]; fi\' \e[0;1m\w\e[1m\n$ "
adicionando o e[0;1m\
no início do prompt começou a colorização do prompt. Não posso acreditar que esqueci isso.
Essencialmente, o prompt alterou as cores porque o terminal mudou da cor anterior emitida por ls. Eu pensei que era o problema antes, mas não consegui descobrir a sintaxe necessária para colorir o primeiro bit.