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-a
commande 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;
la source
TERM
estxterm-256color
ettput am; echo $?
me donne juste 0.stty -a
?Réponses:
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.
la source