私は同じことcat <(cat)をcat | catすることを期待しました:stdinからstdoutに行をコピーします。私の理解では、両方がcatサブシェルでa を実行し、サブシェルcatのstdoutを一時的な名前付きパイプにcatリダイレクトしてから、stdinをパイプにリダイレクトして現在のシェルで別のシェルを実行します。
代わりに、cat <(cat)端末で入力できますが、入力行はコピー^Dされず、シグナルを送信できませんEOF。cat | cat期待どおりに動作します。
さらなる実験として、にcat =(cat)似た問題があるかどうかを確認cat <(cat)しました^Dが、期待どおりに動作します。aまでのすべてのstdin が一度にstdoutにコピーされます。
誰もzshがボンネットの下で何をしているのかを理解するのを助けることができますか?