Secondo la sua documentazione, bash attende che tutti i comandi in una pipeline abbiano terminato l'esecuzione prima di continuare
La shell attende che tutti i comandi nella pipeline terminino prima di restituire un valore.
Quindi perché il comando yes | truetermina immediatamente? Il yesloop non dovrebbe essere per sempre e impedire alla pipeline di tornare?
E una domanda secondaria: secondo le specifiche POSIX , le pipeline della shell possono scegliere di tornare dopo il termine dell'ultimo comando o attendere il completamento di tutti i comandi. Le shell comuni hanno comportamenti diversi in questo senso? Ci sono delle conchiglie dove yes | truerimarranno in loop per sempre?
trueè fondamentalmente un {return 0;}programma, quindi non mi aspetto che duri a lungo, figuriamoci per sempre.
yes | tee >(true) >/dev/nullfarà come ti aspetti, tra l'altro, cometeecontinua fino a quando tutti gli scrittori sono morti, quinditrueuscire non lo interromperà del tutto.