PS1でゼロ以外の戻り状態を表示

PS1でゼロ以外の戻り状態を表示

プロンプトに返品ステータスを含めたいです。 (追加しやすいです'$? 'か?)

しかし、私はゼロ以外の状態(および末尾の空白)だけを返したいと思います。

例:

sd ~ $ false
1 sd ~ $ true
sd ~ $ 

答え1

このオプションがオンになっていることを確認してくださいpromptvars(デフォルト)。次に、必要なコードを入力して、PROMPT_COMMANDプロンプトに必要な内容を含む変数を定義します。

PROMPT_COMMAND='prompt_status="$? "; if [[ $prompt_status == "0 " ]]; then prompt_status=; fi'
PS1='$prompt_status\h \w \$ '

zsh では条件付き構成を使用できますPS1(bash には該当しません)。

PS1='%(?,,%? )%m %~ %# '

答え2

使用する必要はありませんPROMPT_COMMAND。ここでは不要な問題が発生します。あなたがしなければならないのは、この関数を定義することだけです:

prompt_status()
{
    [ $? = 0 ] && return
    echo -n "${?} "
}

その後、PS1を次のように設定します。

shopt -s promptvars
PS1='$(prompt_status)'$PS1

prompt_status()内部サブシェルの評価は$?変更から保護されます。

答え3

私が持つことができる最高のものはそれを通してです

PS1='${?/#0/}'":$PS1"

区切り文字としてaを追加した:ため、質問の内容が正しくありません。

関連情報