[英]Why does a change in arithmetic expression change behaviour of ctrl-d in bash script?
[英]On W32 Emacs why does Ctrl-D in Cygwin or MinGW bash issues repeated EOFs?
我正在使用带有Cygwin bash 3.2.51的W32 GNU Emacs 24.1.50.1。 我知道这种组合非常麻烦(请参阅EmacsWiki和Cygwin列表 )。 但是,我现在要解决的问题并不限于Cygwin。 我也遇到了MinGW的问题。 因此,问题是:
在Emacs中,通过Mx shell
启动Mx shell
前提是您已经适当设置了变量shell-file-name
和explicit-bash-args
(请参见例如此处 )。 然后发出一个需要标准输入的命令,例如cat
。 为了抵消的cat
通常可以按Ctrl-d 一次 ,并返回到shell提示符。 在W32 emacs中,执行此操作(或什至当您明确发出Mx comint-send-eof
),cat命令将退出, bash shell也将退出。
我试图通过将环境变量IGNOREEOF
设置为5来提高bash的“弹性”,但随后使用Ctrl-D会产生以下输出
$ Use "exit" to leave the shell.
$ Use "exit" to leave the shell.
$ Use "exit" to leave the shell.
$ Use "exit" to leave the shell.
$ Use "exit" to leave the shell.
$ exit
Process shell finished
当然,重击又退出了。 仅当外壳程序在W32 emacs中运行时才会发生此问题-通过Cygwin tty窗口运行Cygwin bash,并且通过其自己的MinTTY运行MinGW bash正常。
为什么在W32 Emacs中会发生这种情况?在使用W32 Emacs时如何退出退出运行的子命令(例如cat
)而不退出bash shell?
就像您期望的那样,tty的概念在W32世界中并不真正存在。 如果您想查看这种Unixy行为,则不仅需要运行Cygwin程序,而且该Cygwin程序需要与另一个Cygwin程序(Emacs,终端,您命名)对话。 IOW,您只能使用Cygwin版本的Emacs来实现。
适用于MS Windows的GNU Emacs常见问题解答指出,外壳缓冲区中的任何子进程都存在此问题。 因此,它也会影响DOS命令行(但是,当然,您通常在DOS中通常不使用Ctrl-D,因此不太明显)。 FAQ中没有建议解决方法,因此我猜测没有简单的解决方法。
通常,您可以使用Ctrl-Z以及Ctrl-D。 看一下这个注释:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.