Certifique-se de que a opção promptvars
esteja ativada (por padrão). Em seguida, insira o código desejado em PROMPT_COMMAND
para definir uma variável contendo exatamente o que você deseja no prompt.
PROMPT_COMMAND='prompt_status="$? "; if [[ $prompt_status == "0 " ]]; then prompt_status=; fi'
PS1='$prompt_status\h \w \$ '
No zsh, você pode usar sua construção condicional em PS1
(bash não tem equivalente).
PS1='%(?,,%? )%m %~ %# '