В строгой оболочке POSIX ловушка EXIT
оценивается перед выходом из оболочки из-за выполнения exit
или из-за выполнения последней команды в сценарии. Он не выполняется, если оболочка завершает работу по сигналу.
Если вы хотите перехватить Ctrl+C , вам придется перехватитьINT
(сигнал "прерывание" ). Если закрытие терминала посылает скрипту сигналHUP
(«повесить трубку -» ), вам также придется перехватить его.
trap 'rm -rf "$TMP"; trap - EXIT; exit' EXIT INT HUP
Вы также можете захотеть перехватить TERM
, общий сигнал "завершения", отправляемый по умолчанию kill
.
Приведенная выше ловушка явно сбрасывает ловушку EXIT
, чтобы она не вызывалась снова при завершении сценария из-за получения одного из перечисленных сигналов.