¿Cómo soluciono mi mensaje en el modo shell de emacs?

¿Cómo soluciono mi mensaje en el modo shell de emacs?

Estoy programando algo en la máquina de un colega. Tiene una versión de emacs (23.1.1) que no he usado antes. Mi problema es que cuando voy al modo shell, mi indicador de bash se ve así:

^[]0;jay@socrates:~^G[jay@socrates]$ 

Lo he PS1configurado '[\u@\h]\$ 'en mi .bashrc. Se supone que debería verse así:

[jay@socrates]$

Así es como se ve en un caparazón normal. También verifiqué que PS1 esté configurada con el valor correcto en el shell de emacs, así que ahora no tengo ideas. ¿Cómo puedo hacer que mi mensaje tenga el aspecto que quiero?

He visto algunas sugerencias para usar termo eshellen lugar de shell. termtiene el mismo problema rápido que el anterior e eshellignora por completo el mío PS1, por lo que eso realmente no ayuda.

Respuesta1

Su shell está intentando configurar el título/encabezado de XTerm (u otra consola). Hay varias formas de hacer esto.

Primero asegúrate de que la PS1 sea realmente lo que crees que es

echo $PS1 | less -E

Eso le indicará que si hay caracteres de control en el mensaje, menos los hará parecer divertidos. Suponiendo que su mensaje es exactamente como usted dice, entonces probablemente sea la variable de entorno PROMPT_COMMAND. Puedes verlo de la misma manera...

echo $PROMPT_COMMAND | less -E

Si el problema es el comando rápido, puede simplemente desarmarlo. En cualquier caso, estas variables se están configurando en algún lugar y no deben configurarse para actualizar el encabezado de XTerm, si no estás en un XTerm.

Puede buscar en el bashrc "estándar" (/etc/bashrc). Debería ver un código que busca un shell iterativo (está configurado en PS1) y luego busca xterm (mirando la variable $TERM) y hace algo diferente allí que para otros tipos de terminales.

Sospecho que en algún lugar de la inicialización de bash hay una configuración codificada, que solo debe realizarse en programas de consola compatibles con xterm. Lea man bashpara encontrar una lista total de archivos que puede buscar y revisar.

Si todo lo anterior falla, intente

printenv | less

Y vea si puede encontrar algo sospechoso allí y luego localice dónde se está colocando. Publíquelo aquí si no puede resolverlo.

Respuesta2

Me encontré exactamente con el mismo problema y se debe a PROMPT_COMMAND. Me gusta el título de xterm. Entonces agregué la siguiente línea en ~/.emacs_bash

export PROMPT_COMMAND=""

Respuesta3

Puede tener algo que ver con el tipo de terminal del shell de emacs frente a su shell normal. Compruebe en qué TERMestá configurada la variable de entorno en ambos shells. Si son diferentes, entonces debería poder cambiar el tipo de terminal de shell de emacs o usar una definición PS1 diferente para el tipo de terminal de emacs en .bashrc.

También puedes intentarlo M-x ansi-term(y ansi-color-for-comint-mode-onsi tienes indicaciones de colores).

Respuesta4

Esto fue respondido muy bien en el sitio stackoverflow. por Daniel Poe.

Aquí está su respuesta.

Puede usar AnsiTerm, que admite colores, o puede habilitar AnsiColor para el shell normal:

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)

información relacionada