
Ich verwende eine neue Lubuntu 14.04-Installation. Ich verwende LXTerminal und dies ist die Eingabeaufforderung, die ich über die .bashrc-Datei einstelle:
export PS1="\e[0;36m$ \w \e[m"
Angenommen, ich gebe einen Befehl mit einer Länge von bis zu 15 Zeichen ein (und führe ihn aus, sodass er im Verlauf registriert wird) (ohne die Meldung „Befehl nicht gefunden“ zu beachten):
$ ~ 012345678901234
012345678901234: command not found
Wenn ich jetzt die Pfeiltaste nach oben drücke, erhalte ich meinen Befehl zurück:
$ ~ 012345678901234
Und wenn ich die Pfeiltaste nach unten drücke, gelange ich zurück zur bloßen Eingabeaufforderung:
$ ~
DAS PROBLEM Das Problem beginnt, wenn ich 16 oder mehr Zeichen ausführen muss:
$ ~ 0123456789012345
0123456789012345: command not found
Wenn ich jetzt die Pfeiltaste nach oben drücke, wird mir der vorherige Befehl problemlos angezeigt:
$ ~ 0123456789012345
Wenn ich die Pfeiltaste nach unten drücke, gelange ich nicht zur bloßen Eingabeaufforderung zurück, sondern es merkt sich irgendwie 10 Zeichen des ersten über 16 Zeichen langen Befehls in meinem Verlauf und zeigt ihn an, bis etwas anderes ausgeführt wird. Im Grunde wird es vorerst meine Standardeingabeaufforderung.
$ ~ 0123456789
Ich kann nun die Eingabetaste drücken, um es zu entfernen, oder ich kann einen beliebigen anderen Befehl ausführen. Als Beispiel hier:
$ ~ 0123456789ls
Desktop Documents Downloads Music Pictures Public Templates Videos
Was kann ich tun, um das Problem zu beheben? Es ist keine große Sache, aber es ist ziemlich ärgerlich.
Antwort1
Sie müssen Farbcodes einpacken \[
und\]
PS1='\[\e[0;36m\]$ \w \[\e[m\]'
Außerdem ist PS1 nur für Ihre interaktive Shell relevant, Sie müssen es nicht in untergeordnete Prozesse exportieren.