当exec使用时,bash并不总是捕获^ C.

时间:2015-03-09 22:48:37

标签: bash exec

在下面的测试中,我看到在bash 4.2.25(ubuntu 12.10)中,当我点击^ C时调用了我的陷阱函数。在4.3.11(ubuntu 14.10)上,程序退出而不调用陷阱。我不知道为什么会这样。我假设它不是一个bash bug,只是我的exec用法是错误的。有什么想法吗?

#!/bin/bash

mytrap()
{
    echo TRAPPED
}

exec &> >(tee -a logfile)
trap "mytrap" 0 1 2 15 ERR SIGINT SIGTERM EXIT
sleep 1000

将T恤排除在等式之外只是为了排除这一点,我认为没有变化:

exec &> >(cat -)

ubuntu12# ./test.sh
^CTRAPPED
TRAPPED
TRAPPED

ubuntu14# ./test.sh
^C

1 个答案:

答案 0 :(得分:0)

Ubuntu 14上的终端有机会将Ctrl-C映射到"复制"?例如,在我使用gterm的Fedora 12盒子上,我必须在Edit-> Preferences->快捷方式中明确取消映射Ctrl-C,以便使用Ctrl-C来终止进程。