我对 Linux 还是很陌生,但我对 SSH 和 PUTTY 的概念更陌生。在我通过 SSH 进入 linux box 后,我启动了以下命令:
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 session 期间如何处理某些信号。命令。所以我尝试启动 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 /; set echo off; set term=dumb; set echo on; pwd; bash -i;'
你可以在 bash -i
之前放置 trap
,以防止 bash -i
接收信号,如下所示:
bash -c ' cd /; set echo off; set term=dumb; set echo on; pwd; trap "" 2; bash -i;'
关于linux - 启动时忽略 csh 中的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18234232/