Mi aspettavo cat <(cat)e cat | catfare la stessa cosa: copiare le righe da stdin a stdout. La mia comprensione era che entrambi avrebbero eseguito a catin una subshell, reindirizzando lo catstdout della subshell a una pipe denominata temporanea e quindi eseguendo un'altra catnella shell corrente con il suo stdin reindirizzato alla pipe.
Invece, cat <(cat)mi permette di digitare sul mio terminale, ma nessuna delle linee di input viene copiata e ^Dnon riesce a segnalare EOF; cat | catfunziona come previsto però.
Come ulteriore esperimento, ho verificato se cat =(cat)ha difficoltà simili cat <(cat), ma funziona come mi aspettavo: tutto lo stdin fino a uno ^Dviene copiato nello stdout in una volta sola.
Qualcuno può aiutarmi a capire cosa sta facendo zsh sotto il cofano?