Подтвердить что ты не робот

Терминал в Emacs в Windows - Сообщение об ошибке: "Истерирующий дочерний процесс, недопустимый аргумент"

Я пытаюсь запустить терминал cmd в Emacs 23.2 (последняя версия) в Windows.

В соответствии с Manual я могу войти в режим терминала (начиная новый буфер для терминала) в Emacs, набрав M-x term.

Когда я это сделаю, мне будет предложено:

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

Когда я печатаю RET, я получаю следующее сообщение об ошибке в минибуфере:

Spaning child process: invalid argument

Любые идеи, как заставить его работать?

Спасибо,

4b9b3361

Ответ 1

Следующее должно сделать:

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

  • M-x eshell

  • M-x оболочки

У всех есть свои плюсы и минусы. Поэтому выберите, что вам лучше всего подходит.

Ответ 2

Я получил ту же ошибку при попытке запустить 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, но если вы используете Emacs в Windows, обычно стоит как минимум минимальная установка Cygwin, потому что многие команды Emacs могут использовать инструменты командной строки, доступные для cygwin ( M-x compile в моем случае).

Ответ 3

Имела ту же проблему.

Я запускал procmon и обнаружил, что Emacs хочет найти c:\bin\sh в некоторой форме (sh.exe, sh.bat, sh.cmd и т.д.).
Так как мне захотелось использовать режим term с оболочкой отладки android, я создал c:\bin\sh.bat с содержимым "adb shell", и он работал нормально, хотя и с некоторой странной задержкой ввода.

Ответ 4

Если вы хотите использовать term или ansi-term с cmd.exe или Cygwin bash в Windows с помощью Win32 Emacs, вы можете взглянуть на этот проект:

fakecygpty

Хорошо работает для меня на Win 10.

Ответ 5

Попробуйте M-x cmd-shell. Я предлагаю использовать EmacsW32 для получения наилучших результатов.