在启动时忽略csh中的信号

时间:2013-08-14 14:16:56

标签: linux bash shell signals csh

我还不熟悉Linux,但我对SSH和PUTTY的概念更新。在我连接到Linux机箱后,我发出以下命令:

csh -c 'cd /; set echo off; set term=dumb; set echo on; pwd; csh -i'

除了由信号中断引起的麻烦,例如Ctrl + C之外,这一切都很好。我做了研究并得出了以下结论:

  1. 在csh中,onintr -可用于阻止给定脚本中的信号。这让我想到将onintr -放入cshrc文件中:这样每次运行上面的命令时都会执行它。但是这一行只是一个脚本的本地,所以它不会像我想的那样产生任何真正的全局效应。

  2. 我发现bash与csh不同,它有一个trap命令 - 一个非特定于脚本的命令,它将重新定义在整个shell会话期间处理某些信号的方式。命令。所以我尝试启动bash而不是修改代码以适应。查看bash手册页,我解释bash -c的行为与csh -c大致相同,所以为了复制上述命令,我尝试用csh替换bash并将trap "" 2附加到命令。

  3. 因此,完整的命令将是:

    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 -放入cshrc吗?或者我会更好地使用bash并运行trap命令?我该如何实施更好的解决方案?

1 个答案:

答案 0 :(得分:0)

虽然我不完全明白为什么要使用

这样的陈述
  

bash -c'cd /;设置回声; set term = dumb;设置回声; PWD; bash -i;'

您可以在trap之前放置bash -i,以使bash -i无法接收信号,如下所示:

  

bash -c'cd /;设置回声; set term = dumb;设置回声; PWD;陷阱“”2; bash -i;'