EXIT, DEBUG, RETURN 및 ERR 신호입니까?


14

trapbash 의 내장 구문은 다음과 같습니다.

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

... 각각 sigspec은 신호 이름 또는 신호 번호입니다. 신호 이름은 대소 문자를 구분하지 않으며 SIG 접두어는 선택 사항입니다.

...

그 밖으로 bash는 수동 포인트가 sigspec될 수있다 EXIT, DEBUG, RETURN,와 ERR. 그들은 신호의 이름입니까?

아래에 주어진 모든 신호 이름 목록에서 찾을 수없고 접두사 SIG를 추가해도 됩니까?

그것들은 bash 쉘에만 관련이 있고 Linux OS에는 관련이 없습니까? 그들은 쉘 신호를 강타하지만 Linux OS 신호는 아닌가?

$ 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    

감사.

답변:


19

이 이름은 bash에서 특별한 의미를 가지며 사용 설명서에 설명되어 있습니다 .

sigspec이 0 또는 EXIT이면 쉘이 종료 될 때 arg가 실행됩니다. sigspec이 DEBUG 인 경우 명령 arg는 모든 간단한 명령, 명령, case 명령, select 명령, 명령에 대한 모든 산술 및 첫 번째 명령이 쉘 함수에서 실행되기 전에 실행됩니다 ...

sigspec이 ERR이면 다음 조건에 따라 파이프 라인 (단일 단순 명령으로 구성 될 수 있음), 목록 또는 복합 명령이 0이 아닌 종료 상태를 리턴 할 때마다 명령 arg가 실행됩니다.


14

이것들은 신호는 아니지만 trap다른 상황에서도 메커니즘 을 사용하는 것이 좋습니다 . 이 이름은 bash 내에서만 의미가 있습니다.


1
EXIT트랩하지만 POSIX에 의해 지정됩니다.
Kusalananda

@ Kusalananda 나는 다른 껍질이 이것을 지원하지 않았다는 것을 의미하지는 않았다.
Hauke ​​Laging

3
@HaukeLaging Tecnically (그리고 비공식적으로) 말하면 "이러한 이름은 " 내 bash 에서만 의미가 있습니다 . "
Pharap
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.