Поэтому это отправляет SIGINT в процесс на переднем плане вместо к bash
(который запускает скрипт). Если Вы хотите сделать это, сделайте функцию асинхронной и затем используйте wait
(который будет действовать как ожидалось и использовать прерывание).
Я предполагаю, что Вы имеете acpid
установленный, в этом случае необходимо поместить (даже пустой) файл в /etc/acpi/events/powerbtn
поскольку обработчик по умолчанию проверяет, существует ли этот файл и если это, он не будет инициировать завершение работы самостоятельно.
От /etc/acpid/powerbtn-acpi-support.sh
:
if [ -f /etc/acpi/events/powerbtn -o -f /etc/acpi/events/powerbtn.dpkg-bak ] ; then
logger Acpi-support not handling power button, acpid handler exists at /etc/acpi/events/powerbtn or /etc/acpi/events/powerbtn.dpkg-bak.
exit 0
fi
Только, чтобы быть полностью уверенными, можно также прокомментировать наличие строки № 31:
/sbin/shutdown -h -P now "Power button pressed"
в том же самом файле.