Pokial to cele zabalim do subshelu (normalnymi zatvorkami), vsetko funguje. Ak to ale miesto subshellu zabalim do {}:
Odpovedal si si sám. () - subshell, {} - blok, tj. žiaden shell sa neukončuje, nenastane EXIT udalosť.
~$ cat s1
#!/bin/bash
echo Start
(
echo Subshell start
trap "echo Exit trap - subshell" EXIT
echo Subshell end
)
echo End
~$ bash s1
Start
Subshell start
Subshell end
Exit trap - subshell
End
~$ cat s2
#!/bin/bash
echo Start
{
echo Block start
trap "echo Exit trap" EXIT
echo Block end
}
echo End
~$ bash s2
Start
Block start
Block end
End
Exit trap
~$
Ak by to nebol voľný blok ale funkcia, mohol by si použiť RETURN trap.