Aktualizace:trap vyžaduje odstranění SIG předpona pod podmínkou, ačkoli některé shelly ji podporují. Viz komentář níže.
Ampersand "&" spustí příkaz na pozadí v novém procesu. Když jeho nadřazený proces (ve vašem případě příkaz, který spouští bash skript), tento proces na pozadí resetuje svůj nadřazený proces na init (proces s PID 1), ale nezemře. Když stisknete ctrl+c , posíláte signál přerušení do procesu na popředí a neovlivní proces na pozadí.
Chcete-li zastavit proces na pozadí, měli byste použít kill příkaz s PID nejnovějšího procesu na pozadí, který lze získat pomocí $! .
Pokud chcete použít ctrl+c Chcete-li ukončit proces skriptu i pozadí, můžete provést toto:
trap 'kill $BGPID; exit' INT
sleep 1024 & # background command
BGPID=$!
sleep 1024 # foreground command of the script
trap upravuje obsluhu pasti SIGINT (trap vyžaduje odstranění SIG prefix, ale některý shell může podporovat jeho zahrnutí), takže skript proces ukončí pomocí $BGPID než vystoupí.