次の方法でPS1をカスタマイズしようとしています(色を削除しました)。
PS1='\u@\h:\w$(git_branch)$(useExitCode)\$ '
どこ
git_branch()
{
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
退室状況はピックアップしたいです。今後関数git_branch
が実行されてから使用されますuseExitCode
。どうすればいいですか?後者の関数は次のとおりです。
useExitCode()
{
local exitCode=${1}
if [[ ${exitCode} == 0 ]]; then
echo ':)'
else
echo ':('
fi
}
問題は、PS1に終了コードをどのように保存し、後で使用できるかということです。
次のことはうまくいきませんが、一般的な方向のアイデアを提供します。
PS1='exitCode=$?\u@\h:\w$(git_branch)$(useExitCode ${exitCode})\$ '
上記のechoは「exitCode = 0」(または= 1)部分ですが、保存されていないため、後で「$ {exitCode}」を呼び出すと空です。
ベストアンサー1
PROMPT_COMMAND
これには変数を使用します。
PROMPT_COMMAND='lstatus=$?'
PS1='$(false)$(exit 3)<$lstatus> '
<0> sh -c 'exit 17'
<17> echo $?
17
<0>
bash(1)
マンページから:
PROMPT_COMMAND設定すると、この値はコマンドとして実行されます。以前すべての主要なヒントを送信してください。