我还不熟悉Linux,但我对SSH和PUTTY的概念更新。在我连接到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命令?我该如何实施更好的解决方案?
答案 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;'