ジョブ数に応じたPS1設定

ジョブ数に応じたPS1設定

Bashマニュアルから(制御プロンプト)1):

\j the number of jobs currently managed by the shell.  

\$ If the effective uid is 0, #, otherwise $.

欲しいものPS1に設定されています

[some-string] $

仕事がないとき。

[some-string]2 $

職業が2つのとき。

どうすればいいですか?

可能であれば、ソリューションはBash拡張とBashの組み込みと同じくらい簡単です。

答え1

screenBashはプロンプト(例:IIRC)で条件をサポートしていないと思いますが、コマンド置換を使用して\jいくつかのロジックを追加できます。

anyjobs() { [[ "$1" != 0 ]] && echo "[ $1 bg job(s) ] "; }
PS1='$? $(anyjobs \j)\u@\h \w\$ '

これは Bash に関連するサブシェルを実行しますfork()が、この問題を解決する方法はありません。

通常、 で変数を設定することでサブシェルを避けることができますが、そこPROMPT_COMMANDからジョブ数を取得する簡単な方法はありません。

関連情報