Re: A defer command as a bash loadable builtin

Gregory Heytings <[email protected]> Thu, 25 Jun 2026 12:42:33 +0000
Newsgroups gmane.comp.shells.bash.bugs
Message-ID <[email protected]>
>
> $ enable -n defer; enable -f ./defer defer
> $ trap -- INT
> $ defer 'echo "hello world"' INT
> $ defer -p INT
> trap -- 'echo "hello world"' SIGINT
> $ defer 'rm -f -- "$tmp"; printf "Cleanup done on %s\\n" "$tmp"' INT
> $ defer -p INT
> trap -- 'rm -f -- "$tmp"; printf "Cleanup done on %s\\n" "$tmp"
> echo "hello world"' SIGINT
>

trap_prepend () { trap "$1
$(trap -P "$2")" "$2"; }

$ trap_prepend 'echo "Hello World!"' SIGINT
$ trap -p SIGINT
trap -- 'echo "Hello World!"
' SIGINT
$ trap_prepend 'rm -f -- "$tmp"; printf "Cleanup done on %s\n" "$tmp"' SIGINT
$ trap -p SIGINT
trap -- 'rm -f -- "$tmp"; printf "Cleanup done on %s\n" "$tmp"
echo "Hello World!"' SIGINT