Là tín hiệu EXIT, DEBUG, RETURN và ERR?


14

Nội dung traptrong bash có cú pháp sau

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

... Mỗi cái sigspeclà một tên tín hiệu hoặc một số tín hiệu. Tên tín hiệu không phân biệt chữ hoa chữ thường và tiền tố SIG là tùy chọn.

...

Hướng dẫn điểm bash ra rằng sigspeccó thể EXIT, DEBUG, RETURN, và ERR. Có phải họ tên của các tín hiệu?

Tại sao tôi không tìm thấy chúng trong danh sách tất cả các tên tín hiệu được đưa ra dưới đây, thậm chí thêm tiền tố SIGvào chúng?

Có phải chúng chỉ liên quan đến bash shell chứ không liên quan đến hệ điều hành Linux? Có phải họ bash tín hiệu vỏ nhưng không phải tín hiệu hệ điều hành 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    

Cảm ơn.

Câu trả lời:


19

Những tên đó có ý nghĩa đặc biệt trong bash mà cách sử dụng được giải thích trong hướng dẫn :

Nếu một sigspec là 0 hoặc EXIT, arg được thực thi khi thoát khỏi shell. Nếu một sigspec là DEBUG, lệnh arg được thực thi trước mỗi lệnh đơn giản, cho lệnh, lệnh case, lệnh chọn, mọi số học cho lệnh và trước khi lệnh đầu tiên thực thi trong hàm shell ...

Nếu một sigspec là ERR, lệnh arg được thực thi bất cứ khi nào một đường ống (có thể bao gồm một lệnh đơn giản), một danh sách hoặc lệnh ghép trả về trạng thái thoát khác không, tuân theo các điều kiện sau ...


14

Đây không phải là tín hiệu nhưng cũng có ý nghĩa khi sử dụng trapcơ chế cho một số tình huống khác. Những tên này chỉ có ý nghĩa trong bash.


1
Các EXITbẫy được chỉ định bởi POSIX mặc dù.
Kusalananda

@Kusalananda Tôi không có nghĩa là các shell khác không hỗ trợ điều này.
Hauke ​​Laging

3
@HaukeLaging Tecnically (và vẻ thông thái) nói nó làm cho câu "Những tên có ý nghĩa trong phạm vi bash chỉ " không chính xác.
Pharap
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.