我正在OS X Lion中使用bash和screen的默认版本。
当我处于屏幕会话中时,我会在bash历史记录中向后滚动,然后出现一个足以包装的命令。
我可能首先输入一些命令:
selassid@tem02:~$ ls ljmix/fiftyfifty_softsphere/T0.350/r2.43/0.565421311859c0.1
83279836214c0.144847759343/
上面的代码可以正确包装,但是如果我按bash的历史记录来访问它,则控制台仅显示:
83279836214c0.144847759343/
因此,提示和命令的第一行都丢失了,这使得编辑变得很困难。如果我滚动回到第一行,它会出现,但是会覆盖输出的最后一行。当我执行命令时,第一行的其余部分将显示,并且一切看起来都与预期的一样:
selassid@tem02:~$ ls ljmix/fiftyfifty_softsphere/T0.350/r2.43/0.565421311859c0.1
83279836214c0.144847759343/
total 1792
...
selassid@tem02:~$
更奇怪的是,如果使用历史记录来访问长命令,但我还没有执行它,则使用任何C-a
屏幕命令,例如切换到另一个窗口然后再返回,或者单击当前终端窗口中的回到它,history命令现在再次正确显示。
我的,PS1='\u@\h:\w$ '
所以这里没有什么奇怪的。
使用历史记录时,是否可以正确显示整个命令?我尝试过使用屏幕环绕设置,但是它们只会使情况变得更糟。
stty -a
显示:
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;
您可以在屏幕内部回显$ TERM并提供输出吗?另外,如果您运行tput am; echo $ ?,您会得到什么?
—
Patrick
TERM
是xterm-256color
和tput am; echo $?
刚才给我0
同样,仅当您在窗口底部的历史记录中滚动时才会发生这种情况,因此所有文本都必须向上移动才能在历史记录中显示命令的第二行。
—
selassid 2011年
输出是
—
安迪·史密斯
stty -a
什么?
我已将其添加到帖子的底部。它与屏幕不运行时的输出匹配。
—
selassid 2011年