Skip to content

Instantly share code, notes, and snippets.

@x-yuri
Last active November 10, 2021 00:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save x-yuri/c599da097ae610066ff5e3106150ed37 to your computer and use it in GitHub Desktop.
Save x-yuri/c599da097ae610066ff5e3106150ed37 to your computer and use it in GitHub Desktop.
EXIT trap and SIGINT/SIGTERM #sh #bash #dash #busybox #SIGINT #SIGTERM #EXIT #trap

EXIT trap and SIGINT/SIGTERM

For some shells an EXIT handler is invoked on SIGINT/SIGTERM (bash), for some it isn't (dash, busybox).

a.sh:

trap 'echo cleanup' EXIT
sleep 3

bash:

$ bash --version
GNU bash, version 5.1.8(1)-release (x86_64-pc-linux-gnu)
...

$ bash a.sh
cleanup

$ bash a.sh
^Ccleanup

$ bash a.sh & sleep 1 && kill \%1
[1] 170100
cleanup
[1]+  Terminated              ./e.sh

busybox:

$ docker run --rm -itv $PWD:/app -w /app alpine:3.14 sh

/app # sh a.sh
cleanup

/app # sh a.sh
^C

/app # sh a.sh & sleep 1 && kill %1
[1]+  Terminated                 sh a.sh

dash:

$ dpkg -l | grep dash | awk '{print $3}'
0.5.7-4+b1

$ sh a.sh
cleanup

$ sh a.sh
^C

$ sh a.sh & sleep 1 && kill %1
[1] 5770
[1]+  Terminated              sh a.sh
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment