Zgodnie z jego dokumentacją, bash czeka, aż wszystkie polecenia w potoku zakończą działanie, zanim przejdzie dalej
Powłoka czeka na zakończenie wszystkich poleceń w potoku przed zwróceniem wartości.
Dlaczego więc polecenie yes | truekończy się natychmiast? Czy yespętla nie powinna być wieczna i spowodować, że rurociąg nigdy nie powróci?
I podpytanie: zgodnie ze specyfikacją POSIX potoki powłoki mogą powrócić po zakończeniu ostatniego polecenia lub poczekać, aż wszystkie polecenia zakończą się. Czy zwykłe muszle zachowują się inaczej w tym sensie? Czy są jakieś muszle, w których yes | truezapętla się na zawsze?
truejest w zasadzie {return 0;}programem, więc nie spodziewałbym się, że będzie działał długo, nie mówiąc już o wieczności.
yes | tee >(true) >/dev/nullzrobi tak, jak się spodziewasz, takteedalej, dopóki wszyscy pisarze nie umrą, więctrueodejście nie zakłóci ich całkowicie.