Esperaba cat <(cat)y cat | cathacer lo mismo: copiar líneas de stdin a stdout. Comprendí que ambos ejecutarían un caten una subshell, redirigirían el catstdout de la subshell a una tubería con nombre temporal y luego ejecutarían otro caten la shell actual con su stdin redirigido a la tubería.
En cambio, cat <(cat)me permite escribir en mi terminal, pero ninguna de las líneas de entrada se copia y ^Dno puede señalizar EOF; cat | catfunciona como se esperaba sin embargo.
Como otro experimento, verifiqué si cat =(cat)tiene dificultades similares cat <(cat), pero funciona como esperaba: todo el stdin hasta un ^Dse copia en stdout de una vez.
¿Alguien puede ayudarme a entender qué está haciendo zsh bajo el capó?
fuente

<(cmd))/dev/null, por lo que el comportamiento difiere (zsh -c 'cat <(cat)'regresa de inmediato y no genera nada).