gpt4 book ai didi

linux - 启动时忽略 csh 中的信号

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:14 24 4
gpt4 key购买 nike

我对 Linux 还是很陌生,但我对 SSH 和 PUTTY 的概念更陌生。在我通过 SSH 进入 linux box 后,我启动了以下命令:

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 session 期间如何处理某些信号。命令。所以我尝试启动 bash 并修改代码以适应。查看 bash 手册页,我解释了 bash -c 的行为与 csh -c 的行为大致相同,因此为了复制上述命令,我尝试替换 cshbash 并将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com