Eu não acho que o Bash suporte condicionais no prompt (como, por exemplo, screen
, IIRC), mas você poderia usar a substituição de comando com \j
para adicionar alguma lógica sobre ele.
anyjobs() { [[ "$1" != 0 ]] && echo "[ $1 bg job(s) ] "; }
PS1='$? $(anyjobs \j)\u@\h \w\$ '
Isso executa um subshell, que envolve um fork()
no Bash, mas não consigo ver uma maneira de contornar isso.
Em geral, você poderia evitar o subshell definindo uma variável em PROMPT_COMMAND
, mas não consigo ver uma maneira simples de obter o número de trabalhos lá.