私はzsh 5.8(arm-apple-darwin20.2.0)を使用しています。PIPESTATUS
次のシェルプロンプトでzshのパイプを読むことができるbashの方法とは異なり、pipestatus
zshのパイプは次のプロンプトから消えるように見えます。
❯ true | false | true ; echo $pipestatus
0 1 0
❯ true | false | true
❯ echo $pipestatus
0
この動作は、回答で提案した動作とは異なります。ここ, zsh ドキュメントにはこれに関する内容は記載されていません。
ベストアンサー1
〜のようにムルpipestatus
何かがパイプを使用しているので、プロンプト関連の自動化で上書きされる可能性があるというコメントを書きました。犯人の可能性が最も高い人はフック機能例えばprecmd
1 preexec
。
Bashの保存$?
とPIPESTATUS
トラップの周りの他のいくつかの項目とPROMPT_COMMAND
(save_parser_state
)。$?
多くの場合、Zsh(源泉、保存する場所を見つけるlastval
)、拡張ヒントを含める(promptexpand
precmd
)と次のようなフックを実行しますpreexec
(callhookfunc
着信電話doshfunc
)を使用しますnoreturnval=1
が、決して保存しませんpipestatus
。
¹次の場合は、プロンプトのコードで変数を設定することもできます。prompt_subst
設定されていますが、サブシェルにパイプがあり、元のシェルのpipestatus
。