Eu esperava cat <(cat)e cat | catfiz o mesmo: copiar linhas de stdin para stdout. Meu entendimento era que ambos executariam a catem um subshell, redirecionariam o catstdout do subshell para um pipe nomeado temporário e, em seguida, executariam outro catno shell atual com o stdin redirecionado para o pipe.
Em vez disso, cat <(cat)permita-me digitar no meu terminal, mas nenhuma das linhas de entrada é copiada e ^Dfalha ao sinalizar EOF; cat | catfunciona como esperado.
Como experimento adicional, verifiquei se cat =(cat)há dificuldades semelhantes cat <(cat), mas funciona como eu esperava: todo o stdin até a ^Dé copiado para stdout de uma só vez.
Alguém pode me ajudar a entender o que o zsh está fazendo sob o capô?