O manual do Bash parece ser um pouco confuso aqui, como parece implicar que todos os comandos são nomes ou números de sinais:
trap [-lp] [arg] [sigspec …]
The
-l
option causes the shell to print a list of signal names and their corresponding numbers. Each sigspec is either a signal name or a signal number.
Mas é claro que DEBUG
, EXIT
, ERR
e RETURN
não são sinais reais, mas condições no shell. O texto de ajuda on-line é um pouco diferente, mas não muito melhor, embora mencione "sinais ou outras condições".
O texto no POSIX é muito mais claro, ele afirma explicitamente que a condição é um sinal, ou EXIT
:
trap [action condition...]
The condition can be EXIT, 0 (equivalent to EXIT), or a signal specified using a symbolic name, without the SIG prefix, as listed in the tables of signal names in the <signal.h> header
Portanto, EXIT
tem o número zero, os outros são extensões fora do padrão e não parecem ter equivalentes numéricos.