次のプロンプトでzshパイプラインの状態が消えます。

次のプロンプトでzshパイプラインの状態が消えます。

私はzsh 5.8(arm-apple-darwin20.2.0)を使用しています。PIPESTATUS次のシェルプロンプトでzshのパイプを読むことができるbashの方法とは異なり、pipestatuszshのパイプは次のプロンプトから消えるように見えます。

❯ true | false | true ; echo $pipestatus
0 1 0

❯ true | false | true
❯ echo $pipestatus
0

この動作は、回答で提案した動作とは異なります。ここ, zsh ドキュメントにはこれに関する内容は記載されていません。

ベストアンサー1

〜のようにムルpipestatus何かがパイプを使用しているので、プロンプト関連の自動化で上書きされる可能性があるというコメントを書きました。犯人の可能性が最も高い人はフック機能例えばprecmd1 preexec

Bashの保存$?PIPESTATUSトラップの周りの他のいくつかの項目とPROMPT_COMMANDsave_parser_state)。$?多くの場合、Zsh(源泉、保存する場所を見つけるlastval)、拡張ヒントを含める(promptexpandprecmd)と次のようなフックを実行しますpreexeccallhookfunc着信電話doshfunc)を使用しますnoreturnval=1が、決して保存しませんpipestatus

¹次の場合は、プロンプトのコードで変数を設定することもできます。prompt_subst設定されていますが、サブシェルにパイプがあり、元のシェルのpipestatus

おすすめ記事