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 | true
termina immediatamente? Il yes
loop 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 | true
rimarranno 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/null
farà come ti aspetti, tra l'altro, cometee
continua fino a quando tutti gli scrittori sono morti, quinditrue
uscire non lo interromperà del tutto.