Dla ustalenia uwagi wybierzmy polecenie
cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat
Liczba potoków jest przypadkowa, nie sprawdzałem innych. Rozumiem oczywiście, że nie jest to najbardziej typowy przypadek użycia powłoki, ale może warto mu się przyjrzeć?
Powoduje on średnio odtwarzalne skutki:
1. Przy moim pierwszym uruchomieniu polecenia wywołanie Setpgid nie powiodło się, co pociągnęło za sobą zakończenie cat:
# cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat
Setpgid error: Permission denied
cat: -: Input/output error
[tekst zachęty mojej powłoki]
Dostarczona powłoka również zamknęła się, zwracając sterowanie do powłoki, w której była uruchomiona.
2. Inny przykład uruchomienia tego polecenia: jeśli nie widać żadnych niepomyślnych wywołań systemowych, polecenie zdaje się wcale nie wykonywać – nie odpowiada na wpisywany tekst i nie jest to bynajmniej kwestia powolności mojego systemu, bo w innych powłokach to polecenie wykonuje się poprawnie. Ctrl-d nie zwraca sterowania powłoce. Ctrl-c powoduje za to wypisanie wiadomości o przeniesieniu zadania do tła (istotnie można sprawdzić np. poleceniem ps, że co najmniej część programów cat pozostała uruchomiona), a późniejsze przywrócenie go na pierwszy plan sprawia, że zadanie od razu się zakańcza.
# cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat
aaa
^C[1] suspended 'cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat'
# fg
[1] continue 'cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat | cat'
#
Powyżej miał być jeden blok zamiast dwóch, ale forum chyba uznaje, że pustą linią chciałem oddzielić paragrafy/akapity.
Z czego może wynikać takie zachowanie dostarczonej wzorcowej powłoki?