Não há como portably fazer o que você pede, porque a variável PS1 só é definida quando o shell é interativo, e só deve ser alterado em arquivos dot-rc se já estiver definido, como "PS1 é definido?" é o teste clássico para estar em um shell interativo.
Escolha seu prompt preferido e use-o. Classicamente, '$' para shells estilo bourne, incluindo bash (o padrão é 'bash- $'), '> 'para tcsh,'% 'para zsh e' # 'se raiz.
Se você está tentando transmitir estado para consistência, basta usar "# 'se raiz, senão' $ '."