
Ich programmiere gerade auf dem Rechner eines Kollegen. Er hat eine Version von Emacs (23.1.1), die ich noch nie benutzt habe. Mein Problem ist, dass meine Bash-Eingabeaufforderung folgendermaßen aussieht, wenn ich in den Shell-Modus wechsle:
^[]0;jay@socrates:~^G[jay@socrates]$
Ich habe in meinem PS1
auf gesetzt . Es soll so aussehen:'[\u@\h]\$ '
.bashrc
[jay@socrates]$
So sieht es in einer normalen Shell aus. Ich habe auch überprüft, ob PS1 in der Emacs-Shell auf den richtigen Wert eingestellt ist, aber jetzt habe ich keine Ideen mehr. Wie kann ich meine Eingabeaufforderung so gestalten, wie ich es möchte?
Ich habe einige Vorschläge gesehen, anstelle von term
oder zu verwenden . weist das gleiche Eingabeaufforderungsproblem wie oben auf und ignoriert mein vollständig , sodass das nicht wirklich hilft.eshell
shell
term
eshell
PS1
Antwort1
Ihre Shell versucht, den Titel/Header von XTerm (oder einer anderen Konsole) festzulegen. Dies kann auf verschiedene Weise geschehen.
Stellen Sie zunächst sicher, dass die PS1 wirklich das ist, was Sie denken
echo $PS1 | less -E
Dadurch erfahren Sie, ob die Eingabeaufforderung Steuerzeichen enthält. Less lässt sie komisch aussehen. Vorausgesetzt, Ihre Eingabeaufforderung ist genau so, wie Sie es sagen, dann liegt es wahrscheinlich an der Umgebungsvariable PROMPT_COMMAND. Sie können das auf die gleiche Weise betrachten ...
echo $PROMPT_COMMAND | less -E
Wenn der Eingabeaufforderungsbefehl das Problem ist, können Sie ihn einfach löschen. In beiden Fällen werden diese Variablen irgendwo eingerichtet und sollten nicht so eingestellt werden, dass der XTerm-Header aktualisiert wird, wenn Sie sich nicht in einem XTerm befinden!
Sie können in der „Standard“-Bashrc (/etc/bashrc) nachsehen. Sie sollten Code sehen, der nach einer iterativen Shell sucht (ist PS1 eingestellt) und dann nach xterm sucht (unter Berücksichtigung der Variable $TERM) und dort etwas anderes macht als bei anderen Terminaltypen.
Ich vermute, dass irgendwo in der Bash-Initialisierung ein fest codiertes Setup vorhanden ist, das nur mit xterm-kompatiblen Konsolenprogrammen durchgeführt werden sollte. Lesen Sie weiter, man bash
um eine vollständige Liste der Dateien zu finden, nach denen Sie suchen und die Sie durchsuchen können.
Wenn alle oben genannten Schritte fehlschlagen, versuchen Sie
printenv | less
Und sehen Sie nach, ob Sie dort etwas Verdächtiges finden, und finden Sie dann heraus, wo es eingestellt wird. Posten Sie es hier, wenn Sie es nicht herausfinden können.
Antwort2
Ich bin auf genau dasselbe Problem gestoßen und es liegt an PROMPT_COMMAND. Mir gefällt der xterm-Titel. Also habe ich folgende Zeile in ~/.emacs_bash hinzugefügt
export PROMPT_COMMAND=""
Antwort3
Es kann etwas mit dem Terminaltyp der Emacs-Shell im Vergleich zu Ihrer normalen Shell zu tun haben. Überprüfen Sie, auf welchen Wert die TERM
Umgebungsvariable in beiden Shells eingestellt ist. Wenn sie unterschiedlich sind, sollten Sie in der Lage sein, den Terminaltyp der Emacs-Shell zu ändern oder eine andere PS1-Definition für den Emacs-Terminaltyp in zu verwenden .bashrc
.
Sie können es auch versuchen M-x ansi-term
(und ansi-color-for-comint-mode-on
wenn Sie Farbaufforderungen haben).
Antwort4
Dies wurde auf der Stackoverflow-Site von Daniel Poe sehr gut beantwortet.
Sie können AnsiTerm verwenden, das Farben unterstützt, oder Sie können AnsiColor für die normale Shell aktivieren:
(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)