2010-12-26 10 views
32

Sto provando ad avviare un terminale cmd in Emacs 23.2 (versione più recente) in Windows.Terminale in Emacs in Windows - Messaggio di errore: "Processo figlio spawning, argomento non valido"

Secondo lo Manual, posso entrare in modalità terminale (iniziando un nuovo buffer per il terminale) in Emacs digitando M-x term.

Quando faccio questo, ottengo richiamato per:

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

Quando digito RET, ottengo il seguente messaggio di errore nel minibuffer:

Spaning child process: invalid argument 

Tutte le idee come farlo funzionare ?

Grazie,

+4

Avendo lo stesso problema qui :( – dolzenko

+2

Ho lo stesso problema qui, ma con 'C:/Programmi (x86) /Git/bin/bash.exe' (vale a dire, il "usa una shell effettiva "è improbabile che sia il problema) – Arafangion

+0

Vedere anche http://stackoverflow.com/questions/20263012 –

risposta

9

segue dovrebbe fare:

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

  • M-x ESHELL

  • M-x shell

Tutti hanno i loro pro e contro. Quindi scegli ciò che ti si addice meglio.

+1

No. Non ho idea del perché, ma con «shell» il gdb di MinGW ha strani comportamenti scorretti. Per esempio. un'applicazione in esecuzione sotto di essa non stampa una dichiarazione di stampa, lamentandosi di argomenti non validi quando inserisco qualcosa. Il gdb che gira su un terminale semplice non ha alcun problema, quindi questo è sicuramente il problema di Emacs. Lo stesso per entrambe le modalità 'gdb' e' gud-gdb'. –

+0

Ho trovato il problema che ho avuto. Scritto qui è la speranza che aiuti qualcuno: il terminale Windows® ha la sua codifica (può essere trovato con il comando chcp, può essere diverso, dipende dalle impostazioni locali), e per lavorare con il gdb è necessario impostare la codifica del buffer per accordare un sistema –

1

Prova M-x cmd-shell invece. Suggerisco di utilizzare EmacsW32 per i migliori risultati.

+4

Grazie a İsmail, posso sicuramente usare la shell Mx sia in Emacs che in EmacsW32 e nella shell cmd di Mx in EmacsW32, ma vorrei emulare un terminale reale per far funzionare correttamente alcuni programmi di console interattivi. In altre parole, vorrei ottenere il termine Mx. –

+1

Quindi è necessaria una shell reale come bash da cygwin o msys. cmd.exe da Windows non è un UNIXy shell – ismail

+4

Ho msys bash, ma (termine "bash") o (termine "the-full-path-to-bash.exe") entrambi si lamentano ancora di argomenti non validi .. –

3

Aveva lo stesso problema.

ho corse ProcMon e scoperto che Emacs vuole trovare c:\bin\sh in qualche forma (sh.exe, sh.bat, sh.cmd, ecc).
Dato che mi è capitato di voler utilizzare la modalità termini con la shell di debug di Android, ho creato c:\bin\sh.bat con contenuti "adb shell" e ha funzionato bene, anche se con qualche strano ritardo di input.

+0

I loo In questo modo un po 'e la modalità termine ha alcuni percorsi hard-coded per gli eseguibili, quindi su Windows sembra in alcuni posti scomodi. –

6

Ho ricevuto lo stesso errore durante il tentativo di eseguire M-x compile. Ho aggiunto il seguente al mio file .emacs ed è risolto il 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") 

Ovviamente questa soluzione funziona solo se è installato Cygwin, ma se si esegue Emacs su Windows è di solito vale la pena almeno di un installazione minima di Cygwin perché molti comandi di Emacs possono sfruttare gli strumenti da riga di comando resi disponibili da cygwin (M-x compile nel mio caso).

3

Se si desidera utilizzare o termansi-term con cmd.exe o Cygwin bash su Windows con Win32 Emacs si può, dare un'occhiata a questo progetto:

fakecygpty

funziona molto bene per me su Win 10.

Problemi correlati