Как я фиксирую свою подсказку в emacs режиме оболочки?

Я делаю некоторое программирование на машине коллеги. У него есть версия emacs (23.1.1), я не использовал прежде. Моя проблема состоит в том, что, когда я перехожу к режиму оболочки, моя подсказка удара похожа на это:

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

Я имею PS1 набор к '[\u@\h]\$ ' в моем .bashrc. Это, как предполагается, похоже на это:

[jay@socrates]$

Это - то, как это смотрит в регулярной оболочке. Я также проверил, что PS1 установлен на правильное значение в оболочке emacs, поэтому теперь я вне идей. Как я могу заставить свою подсказку смотреть способ, которым я хочу?

Я видел некоторые предложения для использования term или eshell вместо shell. term имеет ту же быструю проблему как выше, и eshell полностью игнорирует мой PS1 таким образом, это действительно не помогает.

13
задан 28.08.2009, 21:37

3 ответа

Ваша оболочка пытается установить XTerm's (или другая консоль) заголовок/заголовок. Существует много способов, которыми это могло бы делаться.

Сначала удостоверьтесь, что PS1 действительно, что Вы думаете, что это

echo $PS1 | less -E

Это скажет Вам, если будут управляющие символы в подсказке, то меньше заставит их выглядеть забавными. Принятие Вашей подсказки состоит точно в том, как Вы говорите, затем это - вероятно, переменная среды PROMPT_COMMAND. Можно посмотреть на это тот же путь...

echo $PROMPT_COMMAND | less -E

Если быстрая команда является проблемой, то можно просто сбросить ее. В любом случае эти переменные настраиваются где-нибудь и не должны быть установлены обновить заголовок XTerm, если Вы не находитесь в XTerm!

Можно посмотреть в "стандарте" bashrc (/etc/bashrc). Необходимо видеть код, который проверяет на оболочку iteractive (набор PS1), и затем проверяет на xterm (смотрящий на переменную $TERM) и делает что-то другое там, чем для других терминальных типов.

Я подозреваю где-нибудь в инициализации удара, трудно кодированная установка, которая должна только быть сделана на xterm-совместимых консольных программах. Считайте удар человека для нахождения общего списка файлов, которые можно искать и через.

Если все вышеупомянутые сбои, попробовать

printenv | less

И посмотрите, можно ли найти что-то подозрительным там, и затем разыскивать, где это устанавливается. Отправьте его здесь, если Вы не можете разработать его.

13
ответ дан 07.12.2019, 11:33
  • 1
    PROMPT_COMMAND, была проблема. Я не уверен, где это становится установленным, но я добавил строку к своему ~/.bashrc для сбрасывания его, и это работает.Спасибо! – Jay Conrod 01.09.2009, 00:01

Это может быть что-то, чтобы сделать с терминальным типом оболочки emacs по сравнению с Вашей регулярной оболочкой. Проверьте что TERM переменная среды установлена на в обеих оболочках. Если они отличаются затем, необходимо смочь измениться, emacs окружают терминальный тип или используют другое определение PS1 для emacs терминала, вводят .bashrc.

Вы могли также попробовать M-x ansi-termansi-color-for-comint-mode-on если у Вас есть цветные подсказки).

2
ответ дан 07.12.2019, 11:33

Этому ответили очень хорошо на stackoverflow сайте. Daniel Poe.

Вот его ответ.

Можно использовать AnsiTerm, который действительно поддерживает цвета, или можно включить AnsiColor для нормальной оболочки:

(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
1
ответ дан 07.12.2019, 11:33

Теги

Похожие вопросы