
Bei mir auf der Arbeit gibt es einen Server, der csh als Standard-Shell verwendet. Ich bevorzuge bash, daher starte ich jedes Mal, wenn ich mich anmelde bash
.
Aber aus irgendeinem Grund löscht die Rücktaste ganze Wörter, anstatt nur Zeichen zu löschen. Warum ist das so? Wie ändere ich das und lasse die Rücktaste Zeichen für Zeichen löschen??
Zu Ihrer Information: Shift+Bksp löscht Zeichen für Zeichen. Wenn möglich, würde ich Shift+Bksp gerne Wort für Wort löschen lassen. Nur wenn möglich.
Danke
PS: Bitte sagen Sie mir nicht, dass ich die Umschalttaste gedrückt halten soll. Das ist wirklich nervig.
Antwort1
Einige Terminals senden ^h
(Zeichennummer 8) für die BackSpaceTaste, andere senden ^?
(Zeichennummer 127). Viele Terminalemulatoren können konfiguriert werden, und die meisten Programme können so konfiguriert werden, dass sie wissen, welche Taste zu erwarten ist. Natürlich müssen beide Seiten einverstanden sein.
Stty ist eine Möglichkeit, mit der Anwendungen die Konfiguration des Terminals abfragen können. erase = ^?
bedeutet, dass Ihre Terminalbeschreibungsdatei auf dem Server angibt, dass, wenn Ihr Terminal sendet ^?
, dies „vorheriges Zeichen löschen“ bedeutet. werase = ^?
bedeutet, dass ^?
„vorheriges Wort löschen“ bedeutet. Zwischen diesen beiden Einstellungen besteht ein Widerspruch.
Wenn Sie sich über SSH anmelden, sendet der SSH-Client einen Namen für das Terminal, der in die TERM
Umgebungsvariable eingetragen wird. Programme auf dem Server suchen dann in einer Datenbank (genannt termcap oder terminfo) nach Beschreibungen des Terminals. Wenn diese Beschreibungen fehlerhaft sind oder wenn eine Konfigurationsdatei irgendwo (wie /etc/profile
oder ~/.login
oder ~/.bashrc
) die Beschreibungen mit falschen Daten überschreibt, kann es sein, dass Sie eine Nichtübereinstimmung haben. Eine mögliche Ursache für Ihr Problem ist beispielsweise, wenn eine Initialisierungsdatei den Befehl enthält stty werase '^?'
(erzwingt ^?
, ein Wort zu löschen), während Ihr Terminal ^?
nach der Rücktaste sucht.
Idealerweise sollten Sie den Konflikt beheben, da viele Programme diese Informationen lesen.
In Putty können Sie konfigurieren, welche von ^?
oder ^h
die BackSpaceTaste sendet. Überprüfen Sie den Wert dieser Einstellung. Vielleicht ist die einfachste Lösung für Ihr Problem, Putty ^h
für senden zu lassen BackSpaceund sicherzustellen, dass der Server diese Einstellung verwendet ( stty erase '^h'
, um in eingegeben zu werden ~/.bashrc
, erzwingt dies).