Ele faz isso (realmente) porque os desenvolvedores do shell decidiram que seria útil. Você pode fazer isso (er):
O código relevante no bash é assim:
else if (IS_FOREGROUND (job))
{
#if !defined (DONT_REPORT_SIGPIPE)
if (termsig && WIFSIGNALED (s) && termsig != SIGINT)
#else
if (termsig && WIFSIGNALED (s) && termsig != SIGINT && termsig != SIGPIPE)
#endif
{
fprintf (stderr, "%s", j_strsignal (termsig));
if (WIFCORED (s))
fprintf (stderr, _(" (core dumped)"));
fprintf (stderr, "\n");
}
}
qual ( IS_FOREGROUND ) sugere que você está vendo a mensagem quando não coloca seu script em segundo plano.