Czy sygnały EXIT, DEBUG, RETURN i ERR?

14

trapWbudowane w bash ma następującą składnię

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

... Każdy sigspecjest nazwą sygnału lub numerem sygnału. Nazwy sygnałów nie uwzględniają wielkości liter, a prefiks SIG jest opcjonalny.

...

Bash ręczne Zwraca uwagę, że sigspecmoże być EXIT, DEBUG, RETURN, i ERR. Czy są to nazwy sygnałów?

Dlaczego nie znajduję ich na liście wszystkich nazw sygnałów podanych poniżej, nawet dodając SIGdo nich prefiks ?

Czy są one związane tylko z powłokami bash, ale nie z systemem Linux? Czy są to sygnały powłoki powłoki, ale nie sygnały systemu 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    

Dzięki.

Tim
źródło

Odpowiedzi:

19

Te nazwy mają specjalne znaczenie w bash, którego użycie wyjaśniono w instrukcji :

Jeśli sigspec ma wartość 0 lub EXIT, arg jest wykonywane po wyjściu powłoki. Jeśli sigspec to DEBUG, polecenie arg jest wykonywane przed każdym prostym poleceniem, dla polecenia, przypadku, polecenia select, każdego polecenia arytmetycznego dla polecenia i przed wykonaniem pierwszego polecenia w funkcji powłoki ...

Jeśli sigspec to ERR, polecenie arg jest wykonywane za każdym razem, gdy potok (który może składać się z pojedynczego prostego polecenia), listy lub polecenia złożonego zwraca niezerowy status wyjścia, z zastrzeżeniem następujących warunków ...

sebasth
źródło
14

Nie są to sygnały, ale warto zastosować ten trapmechanizm również w niektórych innych sytuacjach. Te nazwy mają znaczenie tylko w bash.

Hauke ​​Laging
źródło
1
EXITPułapka jest określony przez POSIX chociaż.
Kusalananda
@Kusalananda Nie miałem na myśli, że inne powłoki tego nie obsługują.
Hauke ​​Laging
3
@HaukeLaging Tecnically (i pedantycznie) mówiąc, sprawia, że ​​zdanie „Te nazwy mają znaczenie bash tylko wewnątrz ” jest niepoprawne.
Pharap,