Saya mengharapkan cat <(cat)dan cat | catmelakukan hal yang sama: menyalin baris dari stdin ke stdout. Pemahaman saya adalah bahwa keduanya akan mengeksekusi catdalam subshell, mengarahkan catstdout subshell ke pipa bernama sementara, dan kemudian menjalankan yang lain catdi shell saat ini dengan stdin diarahkan ke pipa.
Sebagai gantinya, cat <(cat)izinkan saya mengetik di terminal saya, tetapi tidak ada jalur input yang disalin dan ^Dgagal memberi sinyal EOF; cat | catbekerja seperti yang diharapkan.
Sebagai percobaan lebih lanjut, saya memeriksa apakah cat =(cat)memiliki kesulitan yang sama cat <(cat), tetapi berfungsi seperti yang saya harapkan: semua stdin hingga dapat ^Ddisalin ke stdout dalam sekali jalan.
Adakah yang bisa membantu saya memahami apa yang dilakukan zsh di bawah tenda?