trap '' INT
é destinado a ignorar SIGINTs para o shell e todos os seus filhos.
Mas olhando as saídas strace
em scp
, parece que scp
instala seu próprio manipulador SIGINT que cancela o SIG_IGN acima.
A única maneira de impedir que ele obtenha o SIGINT seria executá-lo em um grupo de processos diferente como:
perl -MPOSIX -e 'setpgid 0,0; exec @ARGV' scp...
ou
(set -m; scp ... & wait)
ou diga ao tty driver para parar de enviar SIGINT com o Ctrl-C (como stty -isig
, ou stty intr ''
para ^C
sozinho), embora você queira restaurar as configurações depois:
saved=$(stty -g)
stty intr ''
scp ...
stty "$saved"