![](/img/trans.png)
[英]Why does foreground job ignore job control signals when Bash is running as PID 1?
[英]Ignore signals in csh on startup
我对Linux还是很陌生,但对SSH和PUTTY的概念甚至更新。 SSH进入Linux机器后,我启动以下命令:
csh -c 'cd /; set echo off; set term=dumb; set echo on; pwd; csh -i'
除了由信号中断(例如Ctrl + C)引起的头痛之外,这一切都很好。 我做了研究,得出以下结论:
在csh中, onintr -
可用于阻止给定脚本中的信号。 这让我开始考虑将onintr -
放入onintr -
文件中:这样,每次我运行上述命令时,它将被执行。 但是该行仅对一个脚本而言是本地的,因此它不会像我想要的那样具有任何实际的全局效果。
我发现bash与csh不同,它具有trap命令-一种非特定于脚本的命令,它将重新定义在整个Shell会话期间如何处理某些信号。 命令。 因此,我尝试启动bash并修改代码以使其适合。 在查看bash手册页时,我认为bash -c
行为与csh -c
大致相同,因此要复制上述命令,我尝试用bash
替换csh
并将trap "" 2
附加到命令中。
因此,完整的命令将是:
bash -c' cd /; set echo off; set term=dumb; set echo on; pwd; bash -i; trap "" 2'
但是,至少在这种情况下, bash -c
行为不一定像csh -c
一样。
关于如何解决此问题,我有些分歧。 默认情况下,如何让Shell忽略Ctrl + C? 我应该将onintr -
放入onintr -
吗? 还是我最好使用bash并运行trap命令? 我应该如何实施更好的解决方案?
尽管我还没有完全理解为什么您会使用诸如
bash -c'cd /; 关闭回声; 设定期限=哑; 设置回声 pwd; bash -i;'
您可以将trap
放在bash -i
之前,以防止bash -i
接收信号,如下所示:
bash -c'cd /; 关闭回声; 设定期限=哑; 设置回声; pwd; 陷阱“” 2; bash -i;'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.