2010-12-26 9 views
32

Estoy tratando de iniciar un terminal cmd en Emacs 23.2 (última versión) en Windows.Terminal en Emacs en Windows - Mensaje de error: "Proceso hijo engendrando; argumento no válido"

Según el Manual, puedo ingresar en modo terminal (iniciando un nuevo buffer para el terminal) en Emacs escribiendo M-x term.

Cuando hago esto, consigo incitado para:

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

Cuando escribo RET, me sale el siguiente mensaje de error en el minibuffer:

Spaning child process: invalid argument 

Alguna idea de cómo hacer que funcione ?

Gracias,

+4

Teniendo el mismo problema aquí :( – dolzenko

+2

Tengo el mismo problema aquí, pero con 'C:/Archivos de programa (x86) /Git/bin/bash.exe' (Es decir, el "uso de un shell real "es poco probable que sea el problema) – Arafangion

+0

Vea también http://stackoverflow.com/questions/20263012 –

Respuesta

9

Lo siguiente debe hacer:

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

  • M-x eShell

  • M-x shell

Todos tienen sus ventajas y desventajas. Así que elige lo que más te convenga.

+1

No. No tengo idea de por qué, pero con «shell» el gdb de MinGW tiene una mala conducta extraña. P.ej. una aplicación que se ejecuta debajo no imprime una declaración de impresión, quejándose de un argumento inválido cuando ingreso algo. El gdb runnning en un terminal simple no tiene ningún problema, así que este es seguramente el problema de Emacs. Lo mismo para ambos modos 'gdb' y' gud-gdb'. –

+0

Encontré el problema que tenía. Lo escribió aquí con la esperanza de que ayude a alguien: el terminal de Windows® tiene su propia codificación (se puede encontrar con el comando chcp, puede ser diferente, depende de la configuración regional), y para poder trabajar con el gdb es necesario establecer la codificación del búfer para otorgar un sistema uno –

1

Trate M-x cmd-shell lugar. Sugiero usar EmacsW32 para obtener los mejores resultados.

+4

Gracias a İsmail, seguramente puedo usar Mx shell en Emacs y EmacsW32, y Mx cmd-shell en EmacsW32, pero me gustaría para emular un terminal real para que algunos programas interactivos de la consola funcionen correctamente. En otras palabras, me gustaría que el término Mx funcione. –

+1

Entonces necesitas un shell real como bash de cygwin o msys. cmd.exe de Windows no es UNIXy shell. – ismail

+4

Tengo msys bash, pero (término "bash") o (término "the-full-path-to-bash.exe") ambos todavía se quejan de argumento inválido ... ?? –

3

Tenía el mismo problema.

me corrieron procmon y descubrió que Emacs quiere encontrar c:\bin\sh en alguna forma (sh.exe, sh.bat, sh.cmd, etc).
Como sucedía que quería usar el modo de término con el shell de depuración de Android, creé c:\bin\sh.bat con el contenido "adb shell", y funcionó bien, aunque con algún retraso de entrada extraño.

+0

I loo Ked en esto un poco y el modo de término tiene algunos caminos codificados a ejecutables, por lo que en Windows se ve en algunos lugares incómodos. –

6

Recibí el mismo error al intentar ejecutar M-x compile. He añadido lo siguiente a mi archivo .emacs y se solucionó el problema:

;; 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") 

Obviamente esta solución sólo funciona si tiene instalado Cygwin, pero si está ejecutando Emacs en Windows que es por lo general vale la pena al menos una instalación mínima de Cygwin porque muchos comandos de Emacs pueden aprovechar las herramientas de línea de comandos disponibles por cygwin (M-x compile en mi caso).

3

Si desea utilizar term o ansi-term con cmd.exe o fiesta de Cygwin en Windows con Win32 Emacs puede, echar un vistazo a este proyecto:

fakecygpty

funciona muy bien para mí en Win 10.

Cuestiones relacionadas