繁体   English   中英

启动时忽略csh中的信号

[英]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)引起的头痛之外,这一切都很好。 我做了研究,得出以下结论:

  1. 在csh中, onintr -可用于阻止给定脚本中的信号。 这让我开始考虑将onintr -放入onintr -文件中:这样,每次我运行上述命令时,它将被执行。 但是该行仅对一个脚本而言是本地的,因此它不会像我想要的那样具有任何实际的全局效果。

  2. 我发现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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM