쉘이 kill -s TERM으로 종료되지 않는 이유는 무엇입니까?

쉘이 kill -s TERM으로 종료되지 않는 이유는 무엇입니까?
#!/bin/sh

trap 'trap - EXIT; echo exit' EXIT
trap 'echo term; exit' TERM

sleep 100 

kill쉘 프로세스의 PID로 스크립트를 실행하면 종료되지 않습니다. TERM 트랩을 제거하고 동일한 작업을 수행하면 쉘이 종료됩니다. 왜? 마찬가지로 sleep 100로 바꾸면 sleep 100 & wait쉘이 종료됩니다 kill.

답변1

셸은 특정 체크포인트(명령 끝 부분)에서만 미해결 트랩을 확인하며 암시적으로 실행 중인 명령을 기다리는 경우 해당 체크포인트 직전에 있습니다.

반면에 이 신호를 사용하지 않으면 trap .... TERM프로세스(셸도 포함)를 종료하는 기본 동작으로 신호가 사용됩니다.

를 사용하면 trap .... TERM더 이상 SIGTERM에 대한 기본 신호 동작이 없어 쉘이 종료되는 것을 방지합니다.

관련 정보