Les signaux EXIT, DEBUG, RETURN et ERR sont-ils présents?


14

La commande trapintégrée dans bash a la syntaxe suivante

trap [-lp] [arg] [sigspec ...]

... Chacun sigspecest soit un nom de signal, soit un numéro de signal. Les noms de signaux ne sont pas sensibles à la casse et le préfixe SIG est facultatif.

...

Les points manuel bash sur qui sigspecpeut être EXIT, DEBUG, RETURNet ERR. S'agit-il de noms de signaux?

Pourquoi ne les trouve-t-on pas dans la liste de tous les noms de signaux donnés ci-dessous, même en y ajoutant un préfixe SIG?

Sont-ils uniquement liés aux shells bash mais pas au système d'exploitation Linux? S'agit-il de signaux shell bash mais pas de signaux OS Linux?

$ trap -l
 1) SIGHUP   2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP
 6) SIGABRT  7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
31) SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX    

Merci.

Réponses:


19

Ces noms ont une signification particulière en bash dont l'utilisation est expliquée dans le manuel :

Si un sigspec est 0 ou EXIT, arg est exécuté lorsque le shell se ferme. Si une sigspec est DEBUG, la commande arg est exécutée avant chaque commande simple, pour la commande, la commande case, la commande select, chaque arithmétique pour la commande, et avant que la première commande ne s'exécute dans une fonction shell ...

Si une sigspec est ERR, la commande arg est exécutée chaque fois qu'un pipeline (qui peut consister en une seule commande simple), une liste ou une commande composée renvoie un état de sortie non nul, sous réserve des conditions suivantes ...


14

Ce ne sont pas des signaux, mais il est logique d'utiliser le trapmécanisme pour certaines autres situations également. Ces noms n'ont de signification que dans bash.


1
Le EXITpiège est cependant spécifié par POSIX.
Kusalananda

@Kusalananda Je ne voulais pas dire que d'autres obus ne supportaient pas cela.
Hauke ​​Laging

3
@HaukeLaging D'un point de vue technique (et pédantique), la phrase "Ces noms n'ont de sens bash qu'à l' intérieur " est incorrecte.
Pharap
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.