Os sinais EXIT, DEBUG, RETURN e ERR?


14

O trapbuilt-in bash possui a seguinte sintaxe

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

... Cada um sigspecé um nome de sinal ou um número de sinal. Os nomes dos sinais não diferenciam maiúsculas de minúsculas e o prefixo SIG é opcional.

...

Os pontos manuais festança fora que sigspecpode ser EXIT, DEBUG, RETURN, e ERR. Eles são nomes de sinais?

Por que não os encontro na lista de todos os nomes de sinais dados abaixo, mesmo adicionando um prefixo SIGa eles?

Eles estão relacionados apenas aos shells do bash, mas não ao Linux OS? Eles são sinais de shell bash, mas não sinais do SO 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    

Obrigado.

Respostas:


19

Esses nomes têm um significado especial no bash para o qual o uso é explicado no manual :

Se um sigspec for 0 ou EXIT, arg será executado quando o shell sair. Se um sigspec for DEBUG, o comando arg será executado antes de cada comando simples, para comando, caso, selecione comando, toda aritmética para comando e antes que o primeiro comando seja executado em uma função shell ...

Se um sigspec for ERR, o comando arg será executado sempre que um pipeline (que pode consistir em um único comando simples), uma lista ou um comando composto retornar um status de saída diferente de zero, sujeito às seguintes condições ...


14

Estes não são sinais, mas faz sentido usar o trapmecanismo para outras situações também. Esses nomes têm significado somente no bash.


1
A EXITarmadilha é especificada pelo POSIX.
Kusalananda

@ Kusalananda Eu não quis dizer que outras conchas não apóiam isso.
Hauke ​​Laging

3
@HaukeLaging Tecnically (e pedante) falando que faz a frase "Estes nomes têm significado dentro bash única " incorreto.
Pharap
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.