Ich habe ein Problem, bei dem das Terminal, wenn ich sehr lange Befehle in Bash eingebe, nicht das wiedergibt, was ich richtig eingebe. Ich würde das erwarten, wenn ich einen Befehl wie den folgenden hätte:
username@someserver ~/somepath $ ssh -i /path/to/private/key
myusername@something.someserver.com
Der Befehl sollte in zwei Zeilen gerendert werden. Stattdessen wird es oft herumlaufen und anfangen, über meine Eingabeaufforderung zu schreiben, in etwa wie folgt:
myreallylongusername@something.somelongserver.comh -i /path/to/private/key
Wenn ich mich entscheide, ein Argument zu ändern, kann ich nicht sagen, wo der Cursor angezeigt wird, manchmal in der Mitte der Eingabeaufforderung, aber normalerweise in der Zeile über der Eingabe.
Zusätzlichen Spaß macht es, wenn ich Upzu einem vorherigen Befehl komme. Ich habe dies sowohl im Gnome-Terminal als auch im Terminator und auf i3 und Cinnamon ausprobiert. Jemand schlug vor, es sei meine Aufforderung. Hier also:
\[\033[01;32m\]\u:\[\033[01;34m\] \W\033[01;34m \$\[\033[00m\]
Ctrll,, reset
und clear
alle tun, was sie sagen, aber wenn ich den Befehl wieder eingebe oder Updas Gleiche passiert.
Ich habe es überprüft und es checkwinsize
ist in Bash aktiviert. Dies passiert bei 80x24 und anderen Fenstergrößen.
Ist das nur etwas, womit ich leben lerne? Gibt es ein Stück Magie, das ich wissen sollte? Ich habe mich entschlossen, nur eine kurze Eingabeaufforderung zu verwenden, aber das behebt das Problem nicht.
\[\033[01;32m\]\u: \[\033[01;34m\]\W \[\033[01;34m\] \$ \[\033[0m\]
scheint die Verrücktheit im Verhalten zu vermeiden - aber weiß nicht, ob es Ihre ursprüngliche Aufforderung vollständig respektiert ...
env -i bash --norc
behebt das Problem. Die $ COLUMNS und $ LINES stimmen überein. Bedeutet das, dass mit meiner .bashrc etwas Komisches passiert?