2

我对 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 -cshrc 文件:这样每次我运行上述命令时都会执行它。但是该行仅对一个脚本来说是本地的,因此它不会像我想要的那样产生任何真正的全局效果。

  2. 我发现 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 命令?我应该如何实施更好的解决方案?

4

1 回答 1

0

虽然我不完全明白为什么你会使用这样的声明

bash -c 'cd /; 关闭回声;设置术语=哑;设置回声;密码; 重击 -i;'

您可以将其放在trap之前bash -i,以免bash -i接收到信号,如下所示:

bash -c 'cd /; 关闭回声;设置术语=哑;设置回声;密码; 陷阱“”2;重击 -i;'

于 2013-10-31T02:01:22.770 回答