Linux 启动时忽略csh中的信号

Linux 启动时忽略csh中的信号,linux,bash,shell,signals,csh,Linux,Bash,Shell,Signals,Csh,我对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-放入cshrc文件中:这样每次运行上述命令时都会执行它。但这一行只是一个脚

我对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-
    放入cshrc文件中:这样每次运行上述命令时都会执行它。但这一行只是一个脚本的局部,所以它不会像我想要的那样产生任何真正的全局效果

  • 我发现bash与csh不同,它有一个trap命令——一个非脚本特定的命令,它将重新定义在整个shell会话期间处理某些信号的方式。指挥部。因此,我尝试启动bash并修改代码以适应。查看bash手册页,我解释了
    bash-c
    的行为方式与
    csh-c
    基本相同,因此为了复制上述命令,我尝试将
    csh
    替换为
    bash
    ,并将
    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-
    放入cshrc?或者我最好使用bash并运行trap命令?我应该如何着手实施更好的解决方案?

    尽管我不完全明白为什么您会使用这样的语句

    bash-c'cd/;设置回声;设置术语=哑;设置回声;pwd;bash-i;'

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

    bash-c'cd/;设置回声;设置术语=哑;设置回声;pwd;陷阱“”2;bash-i;'


    onintr和trap应该尽早启动,否则它将一事无成(您在ssh关闭之前编写),谢谢您的回复。具体来说,我们使用PLINK创建SSH会话;它是中断本身的最终处理程序。你能不能更具体一点,说明在哪里可以建立和/或给出一个例子?