Я ожидал cat <(cat)и cat | catсделать то же самое: скопировать строки из стандартного ввода в стандартный вывод. Насколько я понимаю, оба выполняли бы catв подоболочке, перенаправляли catstdout подоболочки во временный именованный канал, а затем выполняли другой catв текущей оболочке с его stdin, перенаправленным в канал.
Вместо этого cat <(cat)позволяет мне печатать на моем терминале, но ни одна из входных строк не копируется и ^Dне дает сигнал EOF; cat | catработает как и ожидалось.
В качестве дальнейшего эксперимента я проверил, cat =(cat)есть ли схожие трудности cat <(cat), но все работает, как я и ожидал: все stdin вплоть до a ^Dкопируются в stdout за один раз.
Может кто-нибудь помочь мне понять, что Zsh делает под капотом?