Der Bildschirm unterbricht den Beginn eines langen Befehls, wenn über den Bash-Verlauf zugegriffen wird

9

Ich verwende die Standardversionen von Bash und Screen in OS X Lion.

Wenn ich mich in einer Bildschirmsitzung befinde und durch den Bash-Verlauf zurück scrolle, komme ich zu einem Befehl, der lang genug ist, um ihn zu beenden.

Ich könnte zuerst einen Befehl eingeben:

selassid@tem02:~$ ls ljmix/fiftyfifty_softsphere/T0.350/r2.43/0.565421311859c0.1
83279836214c0.144847759343/

Das wird wie oben beschrieben ordnungsgemäß verpackt, aber wenn ich nach oben drücke, um über den Bash-Verlauf darauf zuzugreifen, wird auf der Konsole nur Folgendes angezeigt:

83279836214c0.144847759343/

Daher fehlen die Eingabeaufforderung und die gesamte erste Zeile des Befehls, was die Bearbeitung erschwert. Wenn ich zur ersten Zeile zurück scrolle, wird diese angezeigt, die letzte Ausgabezeile wird jedoch überschrieben. Wenn ich den Befehl ausführe, wird der Rest der ersten Zeile angezeigt und alles sieht wie erwartet aus:

selassid@tem02:~$ ls ljmix/fiftyfifty_softsphere/T0.350/r2.43/0.565421311859c0.1
83279836214c0.144847759343/
total 1792
...
selassid@tem02:~$ 

Was merkwürdiger ist, ist, dass wenn Sie den Verlauf verwenden, um auf den langen Befehl zuzugreifen, ihn aber noch nicht ausführt, Sie einen beliebigen C-aBildschirmbefehl verwenden, z. B. zu einem anderen Fenster und dann zurück wechseln oder wenn ich aus meinem aktuellen Terminalfenster heraus klicke und wieder hinein, der Befehl history wird nun wieder richtig angezeigt.

Also PS1='\u@\h:\w$ ', da ist nichts Seltsames los.

Gibt es eine Möglichkeit, den gesamten Befehl bei Verwendung des Verlaufs korrekt anzuzeigen? Ich habe versucht, mit den Einstellungen für den Bildschirmumbruch zu spielen, aber sie machen die Sache nur noch schlimmer.

stty -a zeigt an:

speed 9600 baud; 46 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
    -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
    -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
    -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
    -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
    eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
    min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
    stop = ^S; susp = ^Z; time = 0; werase = ^W;
selassid
quelle
Können Sie $ TERM im Bildschirm wiedergeben und die Ausgabe bereitstellen? Auch wenn Sie tput am ausführen; echo $?, was bekommst du?
Patrick
TERMist xterm-256colorund tput am; echo $?gibt mir nur 0.
selassid
Dies geschieht auch nur, wenn Sie durch den Verlauf am unteren Rand eines Fensters scrollen, sodass der gesamte Text nach oben verschoben werden muss, um die zweite Zeile des Befehls in Ihrem Verlauf anzuzeigen.
Selassid
Was ist die Ausgabe von stty -a?
Andy Smith
Ich habe es am Ende des Beitrags hinzugefügt. Es entspricht der Ausgabe, wenn der Bildschirm nicht ausgeführt wird.
Selassid

Antworten:

1

Basierend auf der Antwort auf den obigen Kommentar scheint es, dass Sie TERM in einem Ihrer Startskripte überschreiben. Während Sie sich im Bildschirm befinden, sollte Ihr BEGRIFF auf "Bildschirm" und nicht auf "xterm-256color" eingestellt sein.

Ich würde Ihre Shell-Startskripte durchsehen. ~ / .bashrc, / etc / bash / bashrc und möglicherweise andere wie ~ / .bash_profile und / etc / profile, je nachdem, wie Sie alles eingerichtet haben. Wenn Sie Einstellungen für TERM = "..." sehen, müssen Sie diese entfernen.

Patrick
quelle
Das stimmte, aber selbst nachdem diese entfernt wurden und überprüft wurde, ob TERM "Bildschirm" innerhalb des Bildschirms ist, wird das Problem immer noch nicht behoben.
Selassid
Haben Sie eine ~ / .inputrc oder / etc / inputrc? Wenn ja, stellen Sie sicher, dass der Horizontal-Scroll-Modus nicht oder ausgeschaltet ist.
Patrick
Ich habe ein ~ / .inputrc, aber der Horizontal-Scroll-Modus ist nicht eingestellt und das Deaktivieren ändert nichts am Verhalten. Ich habe Eingabe-Meta und Ausgabe-Meta aktiviert und Konvertierungs-Meta deaktiviert, aber das Entfernen dieser Einstellungen ändert nichts am Verhalten.
Selassid