bash - 在 Emacs shell 和 Cygwin 下处理信号

标签 bash shell emacs cygwin

我使用 Emacs 的 Cygwin 版本。除了使用 Emacs shell(M-x shell)时的一些怪癖外,一切都很好。 Emacs shell 使用 Cygwin 的 bash。现在最大的问题是无法向 shell 发送 SIGINT 来中断当前正在运行的命令。例如,我经常使用 ssh 登录到远程主机,然后“tail -f”一个文件。我无法摆脱 tail 命令。在 Unix/Linux 下使用 Emacs shell 时,按 C-c C-c (comint-interrupt-subjob) 会将 SIGINT 发送到 shell (bash),并且 tail 命令(或其他命令)将按预期中断。

举个简单快捷的例子,运行“M-x shell”,然后“sleep 30”,尝试中断 sleep 命令。您可以退出 (C-g) 并在 Emacs 中执行其他操作,但 Emacs shell 会在 sleep 命令期间挂起。

我感觉这与 Cygwin 中信号发送/处理的差异有关,与 Unix 中的信号不同。由于 Cygwin bash shell 对信号作出适当的响应,我不得不假设有一些方法可以让 Emacs 以它理解的方式向 bash shell 发送 SIGINT。有什么想法吗?

顺便说一句,我使用过 Emacs eshell、term 和 ansi-term,但出于多种原因我更喜欢 shell。我也使用 mintty 和 GNU Screen,并且没有任何提示,但是使用 Emacs shell 并将我的终端 session 视为文本文件是一件很棒的事情。

最佳答案

我认为这更多是命令提示符作为 tty 的问题。通常,我在向 Cygwin 和 Cygwin 中的 emacs shell 发送正确信号时遇到问题,所以我找到了这个名为 puttycyg 的程序。 Putty 有一个很好的 shell ,我想要 Cygwin 的类似东西,所以我使用这个:http://code.google.com/p/puttycyg/ .

我在桌面上创建了一个快捷方式,以便于访问。您可以创建一个 session 并从那里将其称为“cygwin”,然后创建可执行文件的快捷方式并使用 -load "cygwin"

关于bash - 在 Emacs shell 和 Cygwin 下处理信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5083806/

相关文章:

python - Python脚本与linux shell的交互

linux - 需要获取一年中所有星期一的日期

Emacs Elisp 动态交互提示

bash - 如何在 bash 中退出一个函数

linux - 如何在一行中搜索模式并打印该行中该模式之后存在的数据

linux - Bash 脚本到带有彩色线条的 tail -f

emacs - 如何在所有模式下在 emacs 中获得自动缩进(非智能缩进)

bash - 如何删除 "find"命令的所有结果

linux - 在 shell 脚本中获取命令输出

emacs gdb tab-completes 目录用空格而不是/