Molti esempi da traputilizzare trap ... INT TERM EXITper le attività di pulizia. Ma è davvero necessario elencare tutti e tre i sigspec?
Il manuale dice:
Se un SIGNAL_SPEC è EXIT (0) ARG viene eseguito all'uscita dalla shell.
che credo valga se lo script è finito normalmente o è finito perché ha ricevuto SIGINTo SIGTERM. Un esperimento conferma anche la mia convinzione:
$ cat ./trap-exit
#!/bin/bash
trap 'echo TRAP' EXIT
sleep 3
$ ./trap-exit & sleep 1; kill -INT %1
[1] 759
TRAP
[1]+ Interrupt ./trap-exit
$ ./trap-exit & sleep 1; kill -TERM %1
[1] 773
TRAP
[1]+ Terminated ./trap-exit
Allora perché tanti esempi elencano tutti INT TERM EXIT? O mi sono perso qualcosa e c'è un caso in cui una suola EXITmancherebbe?
INT TERM EXITil codice di pulizia viene eseguito due volte quandoSIGTERMoSIGINTviene ricevuto.