Lo schermo interrompe l'inizio del comando lungo quando vi si accede attraverso la cronologia di bash


9

Sto usando le versioni predefinite di bash e screen in OS X Lion.

Quando sono in una sessione dello schermo e scorro indietro nella cronologia della bash e arrivo a un comando che è abbastanza lungo da avvolgere.

Potrei prima digitare un comando:

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

Questo si avvolge correttamente come scritto sopra, ma se premo per accedervi tramite la cronologia di bash, la console visualizza solo:

83279836214c0.144847759343/

Quindi manca il prompt e l'intera prima riga del comando, il che rende difficile la modifica; se scorro indietro fino alla prima riga, appare ma sovrascrive l'ultima riga di output. Quando eseguo il comando, viene visualizzato il resto della prima riga e tutto sembra come previsto:

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

La cosa più curiosa è che se uso la cronologia per accedere al comando lungo ma non lo eseguo ancora, allora uso qualsiasi C-acomando su schermo, come passare a un'altra finestra e poi indietro, o se faccio clic fuori dalla finestra del mio terminale corrente e al suo interno, il comando della cronologia ora viene nuovamente visualizzato correttamente.

Mio PS1='\u@\h:\w$ 'quindi non c'è niente di strano che sta succedendo lì.

C'è un modo per mostrare correttamente l'intero comando quando si usa la cronologia? Ho provato a giocare con le impostazioni di avvolgimento dello schermo, ma peggiorano le cose.

stty -a Spettacoli:

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;

Puoi fare eco $ TERM quando sei all'interno dello schermo e fornire l'output? Inoltre, se si esegue tput am; echo $ ?, cosa ottieni?
Patrick,

TERMè xterm-256colore tput am; echo $?mi dà solo 0.
selassid

Inoltre, questo accade solo quando si scorre la cronologia nella parte inferiore di una finestra, quindi tutto il testo dovrebbe spostarsi verso l'alto per mostrarti la seconda riga del comando nella cronologia.
selassid

Qual è l'output di stty -a?
Andy Smith,

L'ho aggiunto in fondo al post. Corrisponde a ciò che viene emesso quando lo schermo non è in esecuzione.
selassid

Risposte:


1

Sulla base della risposta al commento sopra, sembra che tu abbia la precedenza su uno dei tuoi script di avvio. All'interno dello schermo, il TERM deve essere impostato su "schermo", non su "xterm-256color".

Vorrei esaminare i tuoi script di avvio della shell. ~ / .bashrc, / etc / bash / bashrc, e forse altri come ~ / .bash_profile e / etc / profile a seconda di come hai impostato tutto. Se vedi le impostazioni TERM = "...", devi rimuoverle.


Questo era vero, ma anche dopo aver rimosso quelli e aver verificato che TERM sia "schermo" all'interno dello schermo non risolve ancora il problema.
selassid

Hai un ~ / .inputrc o / etc / inputrc? In tal caso, assicurarsi che la modalità di scorrimento orizzontale non sia impostata o che sia disattivata.
Patrick,

Ho un ~ / .inputrc, ma la modalità di scorrimento orizzontale non è impostata e impostandola su off non cambia il comportamento. Ho input-meta e output-meta on e convert-meta off, ma la rimozione di quelle impostazioni non cambia il comportamento.
selassid
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.