Aggiornamento:trap richiede la rimozione di SIG prefisso a condizione, sebbene alcune shell lo supportino. Vedi commento sotto.
 La e commerciale "&" esegue un comando in background in un nuovo processo. Quando il suo processo genitore (il comando che esegue lo script bash nel tuo caso) termina, questo processo in background ripristinerà il suo processo genitore su init (processo con PID 1), ma non morirà. Quando premi ctrl+c , stai inviando un segnale di interruzione al processo in primo piano e non influirà sul processo in background.
 Per terminare il processo in background, dovresti usare il kill comando con PID del processo in background più recente, che potrebbe essere ottenuto da $! .
 Se vuoi utilizzare ctrl+c per terminare sia lo script che il processo in background, puoi fare questo:
trap 'kill $BGPID; exit' INT
sleep 1024 &    # background command
BGPID=$!
sleep 1024      # foreground command of the script
 trap modifica il gestore trap del SIGINT (trap richiede la rimozione del SIG prefisso ma alcune shell potrebbero supportare l'inclusione) quindi lo script terminerà il processo con $BGPID prima che esca.