在下面的测试中,我看到在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
答案 0 :(得分:0)
Ubuntu 14上的终端有机会将Ctrl-C映射到"复制"?例如,在我使用gterm的Fedora 12盒子上,我必须在Edit-> Preferences->快捷方式中明确取消映射Ctrl-C,以便使用Ctrl-C来终止进程。