Подавление сигналов от клавиатуры в bash-скрипте (disable Ctrl+C, Ctrl+Z in bash script)

Нужно было подавить сигналы, которые генерируются с клавиатуры посредством Ctrl+C, Ctrl+U, Ctrl+Z.

Порывшись в мировом разуме, Юра Метлицкий минуты за четыре сформулировал очень красивое решение (красивое по сравнению с использованием trap, с учетом того, что trap еще криво обрабатывал Ctrl+Z): использовать stty.

Для того, чтобы распечатать все настройки текущего терминала, достаточно набрать:

stty -a

Если надо подавить сигналы от Ctrl+"что-то" (чтобы работу скрипта нельзя было прервать с клавиатуры), достаточно в начало скрипта поместить:

stty -isig

Если же усугубить таким образом:

stty -isig -ctlecho

то бонусом будет подавление эха ввода, то есть не будут отображаться всякие ^C на терминале.

В некоторых случаях -isig почему-то не подавляет Ctrl+Z. Тогда следует использовать

stty susp undef

Назад