L'écran coupe le début de la commande longue lorsqu'il est accessible via l'historique de bash

9

J'utilise les versions par défaut de bash et screen dans OS X Lion.

Lorsque je suis dans une session d'écran et que je fais défiler l'historique de bash et que j'arrive à une commande suffisamment longue pour boucler.

Je pourrais d'abord taper une commande:

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

Cela se déroule correctement comme écrit ci-dessus, mais si j'appuie dessus pour y accéder via l'historique de bash, la console affiche uniquement:

83279836214c0.144847759343/

Ainsi, l'invite et la première ligne entière de la commande sont manquantes, ce qui rend la modification difficile; si je reviens à la première ligne, elle apparaît mais elle écrase la dernière ligne de sortie. Lorsque j'exécute la commande, le reste de la première ligne s'affiche et tout semble comme prévu:

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

Ce qui est plus curieux, c'est que si vous utilisez l'historique pour accéder à la commande longue mais que je ne l'exécute pas encore, alors utilisez n'importe quelle C-acommande d'écran, comme passer à une autre fenêtre, puis revenir en arrière, ou si je clique hors de ma fenêtre de terminal actuelle et y revenir, la commande d'historique s'affiche à nouveau correctement.

Mon PS1='\u@\h:\w$ 'donc il n'y a rien d'étrange qui s'y passe.

Existe-t-il un moyen d'afficher correctement la commande entière lors de l'utilisation de l'historique? J'ai essayé de jouer avec les paramètres d'habillage d'écran, mais ils ne font qu'empirer les choses.

stty -a montre:

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;
sélasside
la source
Pouvez-vous faire écho $ TERM à l'intérieur de l'écran et fournir la sortie? De plus, si vous exécutez tput am; echo $ ?, qu'obtenez-vous?
Patrick
TERMest xterm-256coloret tput am; echo $?me donne juste 0.
selassid
De plus, cela ne se produit que lorsque vous faites défiler l'historique au bas d'une fenêtre, donc tout le texte devrait remonter pour vous montrer la deuxième ligne de la commande dans votre historique.
selassid
Quelle est la sortie de stty -a?
Andy Smith
Je l'ai ajouté au bas du message. Il correspond à ce qui est produit lorsque l'écran n'est pas en cours d'exécution.
selassid

Réponses:

1

Sur la base de la réponse au commentaire ci-dessus, il semble que vous remplaciez TERM dans l'un de vos scripts de démarrage. À l'intérieur de l'écran, votre TERM doit être défini sur «écran», et non sur «xterm-256color».

Je regarderais à travers vos scripts de démarrage du shell. ~ / .bashrc, / etc / bash / bashrc, et éventuellement d'autres comme ~ / .bash_profile et / etc / profile selon la façon dont vous avez tout configuré. Si vous voyez des paramètres TERM = "...", vous devez les supprimer.

Patrick
la source
C'était vrai, mais même après les avoir supprimés et vérifié que TERM est bien "écran" à l'intérieur de l'écran, cela ne résout toujours pas le problème.
selassid
Avez-vous un ~ / .inputrc ou / etc / inputrc? Si tel est le cas, assurez-vous que le mode de défilement horizontal n'est pas défini ou que sa valeur est désactivée.
Patrick
J'ai un ~ / .inputrc, mais le mode de défilement horizontal n'est pas défini et le désactiver ne change pas le comportement. J'ai la méta d'entrée et la méta de sortie activée et la conversion de méta désactivée, mais la suppression de ces paramètres ne change pas le comportement.
selassid