Entonces M-xgit-bashy listo, bash se está ejecutando pero con cierta rareza:
bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash: no job control in this shell
^[]0;MINGW64:/c/Users/M??rton^G
MĂĄrton@Marci MINGW64 /c/Users/MĂĄrton
$
e imprime esa línea, comenzando con ^[], después de cada comando que ejecuto. También la codificación está en mal estado. ¿Cómo puedo solucionar esto .emacs?
El ^[]ruido proviene de varios caracteres de control de terminal en su indicador de shell. Intente echo $PS1ver la secuencia completa e intente, por ejemplo, export PS1='$ 'ver que una cadena de solicitud más simple elimine ese problema en particular.
Para la codificación, puede intentar que utf-8 sea su codificación preferida:
(prefer-coding-system 'utf-8)
Configurar el aviso
Emacs establece la variable INSIDE_EMACS para que pueda crear un .bash_profile que establezca PS1 solo cuando se ejecuta en Emacs.
Al probar en mi máquina, la primera línea del indicador tiene los caracteres de control problemáticos. Creé un ~ / .bash_profile con esto.
if [ -n "$INSIDE_EMACS" ]; then
export PS1='\[\033[32m\]\u@\h \[\033[33m\]\w\[\033[36m\]`__git_ps1`\[\033[0m\]\n$ '
fi
Esto establece el indicador en función de lo que git-bash estaba configurando de manera predeterminada, pero eliminé la primera línea (hasta el salto de línea \ n). También eliminé el $ MSYSTEM que pone MINGW64 en el indicador, no necesito ver eso. Lo que queda es el usuario @ host, el directorio actual y el repositorio de git. Los caracteres de control establecen los colores que Emacs muestra correctamente para mí. (Para obtener detalles sobre cómo configurar su solicitud, consulte el manual de bash ).
Con esta configuración, sigo viendo el mensaje de error inicial de ioctl, pero de lo contrario las cosas funcionan como se esperaba y la codificación es utf-8.
Eso funciona, gracias! ¿Qué hace esa (para mí críptica) línea PS1? ¿Puedes ayudar a configurar automáticamente la codificación del búfer de shell en utf-8? ( MĂĄrtondebería leer Márton)
marczellm
La PS1 en mi ejemplo se derivó del valor predeterminado que había establecido un git-bash. Acabo de eliminar todo hasta el salto de línea (\ n). Está utilizando esas secuencias de control para cambiar el color de los diversos bits de información que se muestran: el usuario actual, el host, el repositorio de git, etc. Tendría que rastrear el documento bash PS1 para obtener más detalles. Para utf-8, ¿qué está default-process-coding-systemconfigurado en su Emacs?
glucas
Encontré esto en el manual de Emacs: "Para especificar un sistema de codificación para el shell, puede usar el comando Cx RET c inmediatamente antes del shell Mx. También puede cambiar el sistema de codificación para un subshell en ejecución escribiendo Cx RET p en el shell buffer." (ver gnu.org/software/emacs/manual/html_node/emacs/… )
glucas
Su valor es (undecided-dos . undecided-unix). Estoy buscando una manera de configurar la codificación del búfer automáticamente en lugar de tener que recordar otro conjunto de teclas cada vez que lo abro. Tal vez debería hacer una nueva pregunta.
marczellm
El mío es utf-8 dos y UNIX. No lo configuro explícitamente, pero sí tengo esta configuración: (prefer-coding-system 'utf-8) (setq-default buffer-file-coding-system' utf-8-unix)
glucas
1
Este error apunta a un interruptor no coincidente. Probablemente esté configurado -icy solo necesita -c:
(setq shell-command-switch "-c")
La otra opción es proporcionar tty a git-bash con un comando similar a (lo que sea equivalente a Windows):
Su primera sugerencia no cambia nada. Además, M-x list-processesmuestra que no tuvo ningún efecto: el comando de proceso es D:/Program Files/git/bin/bash --noediting -i. Su segunda sugerencia no puedo entender.
marczellm
1
Esto se debe a que no eliminó el modificador -i.
Usuario de Emacs
Bien, entonces, ¿cómo lo elimino?
marczellm
1
Lo estás usando, explicit-shell-file-nameasí que creo que te gustaría configurar, por ejemplo (setq explicit-bash-args '("--login" "-i")).
glucas
1
Sé que esto no es exactamente lo mismo que el OP, pero creo que es una opción interesante. Puede iniciar emacs desde la línea de comandos de git-bash. Hará que emacs asuma git-bash como el shell.
Ingrese algo como lo siguiente desde su solicitud de bash
MĂĄrton
debería leerMárton
)default-process-coding-system
configurado en su Emacs?(undecided-dos . undecided-unix)
. Estoy buscando una manera de configurar la codificación del búfer automáticamente en lugar de tener que recordar otro conjunto de teclas cada vez que lo abro. Tal vez debería hacer una nueva pregunta.Este error apunta a un interruptor no coincidente. Probablemente esté configurado
-ic
y solo necesita-c
:La otra opción es proporcionar tty a git-bash con un comando similar a (lo que sea equivalente a Windows):
fuente
M-x list-processes
muestra que no tuvo ningún efecto: el comando de proceso esD:/Program Files/git/bin/bash --noediting -i
. Su segunda sugerencia no puedo entender.explicit-shell-file-name
así que creo que te gustaría configurar, por ejemplo(setq explicit-bash-args '("--login" "-i"))
.Sé que esto no es exactamente lo mismo que el OP, pero creo que es una opción interesante. Puede iniciar emacs desde la línea de comandos de git-bash. Hará que emacs asuma git-bash como el shell.
Ingrese algo como lo siguiente desde su solicitud de bash
Luego, en emacs, Mx "shell"
fuente