Bei Verwendung einer farbigen Eingabeaufforderung wird auf meinem System die letzte Zeile der Ausgabe des vorherigen Befehls überschrieben, wenn das letzte Zeichen der Ausgabe keine neue Zeile ist.
Beispiel: Unter Verwendung der nicht farbigen Standard-Bash-Eingabeaufforderung haben wir:
[meinbenutzername @ meinhostname dirname] $ echo -n foo-bar foo-bar [meinbenutzername @ meinhostname dirname] $
Dies wird erwartet.
Verwenden Sie jedoch die folgende kolorierte Eingabeaufforderung:
PS1='\[\033[1;32m\]\u@\h\[\033[0m\]:\[\033[1;34m\]\w\[\033[0m\]\$ '
Wir haben (hier ohne die Farbe gezeigt):
meinbenutzername @ meinhostname: ~ / pfad / zu / dirname $ echo -n foo-bar meinbenutzername @ meinhostname: ~ / pfad / zu / dirname $ rname $
Der Cursor befindet sich jetzt auf dem letzten "r" in der Zeile. Wenn Sie an der Eingabeaufforderung einige Zeichen eingeben, wird der letzte "rname $" überschrieben. Das Endergebnis ist, dass, wenn die Ausgabe des vorherigen Befehls nicht in einer neuen Zeile endet, ich nicht sehen kann, was es ist. Dies ist das Wichtigste, was zu beheben ist. Die Art und Weise, wie die zusätzlichen Zeichen angezeigt werden, aber überschreibbar sind, stört mich nicht sonderlich, wäre aber auch nett zu beheben.
Ich habe dies mit anderen kolorierten Eingabeaufforderungen aus der Bash-Dokumentation und einigen kolorierten Eingabeaufforderungen aus anderen Superuser-Antworten zu kolorierten Eingabeaufforderungen versucht, und alle verhalten sich genau gleich.
$ bash --version GNU Bash, Version 3.1.17 (1) -Release (x86_64-redhat-linux-gnu) Copyright (C) 2005 Free Software Foundation, Inc.
Ich bin mir nicht sicher, aber ich denke, es ist CentOS. Ich weiß nicht, welche Version. Geben Sie mir den Befehl, das Betriebssystem zu überprüfen, und ich werde es ausführen.
PROMPT_COMMAND
, um festzustellen , ob das Verhalten weiterhin besteht. Es wäre auch hilfreich, wenn Sie Ihre Bash-Version (run bash -- version
) und Ihr Betriebssystem angeben würden .
unset PROMPT_COMMAND
hilft nicht $ echo $PROMPT_COMMAND
gibt echo -ne "\033_${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\033\\"