O manual do Bash afirma:
If bash is waiting for a command to complete and receives a signal for which a trap has been set, the trap will not be executed until the command completes.
Isso significa que, apesar de o sinal ser recebido por bash
quando você o envia, sua interceptação em SIGHUP só será chamada quando cat
terminar.
Se esse comportamento não for desejado, use bash
builtins (por exemplo, read
+ printf
em um loop em vez de cat
) ou use trabalhos em segundo plano (consulte Resposta de Stéphane ).