【问题标题】:Terminal in Emacs in Windows - Error message: "Spawning child process; invalid argument" [closed]Windows 中 Emacs 中的终端 - 错误消息:“正在生成子进程;无效参数”
【发布时间】:2011-05-30 22:38:31
【问题描述】:

我正在尝试在 Windows 的 Emacs 23.2(最新版本)中启动 cmd 终端。

根据Manual,我可以在Emacs中输入M-x term进入终端模式(为终端启动一个新的缓冲区)。

执行此操作时,系统会提示我:

Run program: path_to-emacs/bin/cmdproxy.exe

当我输入 RET 时,我在 minibuffer 中收到以下错误消息:

Spaning child process: invalid argument

任何想法如何使它工作?

谢谢,

【问题讨论】:

  • 这里有同样的问题:(
  • 我在这里也有同样的问题,但是使用 'C:/Program Files (x86)/Git/bin/bash.exe' (也就是说,“使用实际的 shell”不太可能成为问题)

标签: windows emacs term


【解决方案1】:

我一直在我的 .bash_profile 中使用它,你应该可以将它设置为你需要的任何东西。注意 - 当我这样做时,我需要重新 source ~/.bash_profile 来获取我所有的别名和东西,我还没有弄清楚。

当我通过“单击”一个文件来启动 Emacs 来运行 Emacs 时 - 我得到一个 Windows CMD 行,当我从 cygwin 中启动时 - 我得到一个 cygwin 类型的 shell。

export ESHELL="c:/cygwin64/bin/bash.exe"

【讨论】:

    【解决方案2】:

    如果你想在带有 Win32 Emacs 的 Windows 上使用 term 或 ansi-term 和 cmd.exe 或 Cygwin bash,你可以看看这个项目:

    fakecygpty

    在 Win 10 上非常适合我。

    【讨论】:

      【解决方案3】:

      我在尝试运行 M-x compile 时遇到了同样的错误。我在.emacs 文件中添加了以下内容,它解决了问题:

      ;; Make sure that the bash executable can be found
      (setq explicit-shell-file-name "C:/cygwin/bin/bash.exe")
      (setq shell-file-name explicit-shell-file-name)
      (add-to-list 'exec-path "C:/cygwin/bin")
      

      显然,这个解决方案只有在你安装了 Cygwin 的情况下才有效,但如果你在 Windows 上运行 Emacs,通常至少值得安装 Cygwin,因为许多 Emacs 命令可以利用 cygwin 提供的命令行工具( M-x compile 在我的情况下)。

      【讨论】:

      【解决方案4】:

      遇到同样的问题。

      我运行了 procmon,发现 Emacs 想要以某种形式(sh.exe、sh.bat、sh.cmd 等)查找 c:\bin\sh。
      由于我碰巧想在 android 调试 shell 中使用 term 模式,所以我创建了 c:\bin\sh.bat,内容为“adb shell”,它运行良好,尽管输入延迟有些奇怪。

      【讨论】:

      • 我对此进行了一些研究,术语模式有一些硬编码的可执行文件路径,所以在 Windows 上它看起来有些尴尬。
      • @Dave 您能否提供一些链接/说明,说明您使用 procmon 解决问题的方法?
      【解决方案5】:

      以下应该做:

      • M-:(make-comint-in-buffer "cmd" nil "cmd" nil)

      • M-xeshell

      • M-xshell

      各有利弊。所以选择最适合你的。

      【讨论】:

      • 没有。我不知道为什么,但是使用 «shell» MinGW 的 gdb 有奇怪的不当行为。例如。在其下运行的应用程序不会打印打印语句,当我输入内容时抱怨参数无效。在普通终端中运行的 gdb 完全没有问题,所以这肯定是 Emacs 的问题。 gdb 和 gud-gdb 两种模式相同。
      • 我发现了我遇到的问题。写在这里希望它对某人有所帮助:Windows®终端有它自己的编码(可以用 chcp 命令找到,它可能不同,取决于语言环境),为了与 gdb 一起工作,需要设置缓冲区的编码给予系统一个
      【解决方案6】:

      改用M-x cmd-shell。我建议使用EmacsW32 以获得最佳效果。

      【讨论】:

      • 感谢 İsmail,我当然可以在 Emacs 和 EmacsW32 中使用 M-x shell,在 EmacsW32 中使用 M-x cmd-shell,但我想模拟一个实际的终端来让一些交互式控制台程序正常工作。换句话说,我想让 M-x term 工作。
      • 那么你需要一个实际的 shell,比如来自 cygwin 或 msys 的 bash。 Windows 中的 cmd.exe 不是 UNIXy shell。
      • 我有 msys bash,但是 (term "bash") 或 (term "the-full-path-to-bash.exe") 仍然抱怨无效参数.. ??
      猜你喜欢
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2018-03-06
      • 2019-12-26
      • 2015-08-08
      • 1970-01-01
      • 2020-07-25
      • 1970-01-01
      相关资源
      最近更新 更多