A tela corta o início do comando longo quando acessado pelo histórico bash

8

Estou usando as versões padrão do bash e da tela no OS X Lion.

Quando estou em uma sessão de tela e rola pelo histórico do bash e chego a um comando que é longo o suficiente para quebrar.

Eu devo primeiro digitar algum comando:

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

Isso é encaixado corretamente, como descrito acima, mas se eu clicar para acessar o histórico do bash, o console exibirá apenas:

83279836214c0.144847759343/

Portanto, o prompt e toda a primeira linha do comando estão faltando, o que dificulta a edição; se eu rolar de volta para a primeira linha, ela aparece, mas substitui a última linha de saída. Quando executo o comando, o restante da primeira linha é exibido e tudo parece conforme o esperado:

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

O que é mais curioso é que, se usar o histórico para acessar o comando longo, mas ainda não o execute, use o comando C-a screen, como alternar para outra janela e depois voltar, ou se eu clicar fora da minha janela de terminal atual e de volta para ele, o comando de histórico agora é exibido corretamente novamente.

Meu PS1='\u@\h:\w$ ' então não há nada estranho acontecendo lá.

Existe uma maneira de mostrar corretamente todo o comando ao usar o histórico? Eu tentei brincar com as configurações de quebra de tela, mas elas só pioram as coisas.

stty -a mostra:

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;
    
por selassid 01.12.2011 / 19:14

1 resposta

1

Com base na resposta ao comentário acima, parece que você está substituindo o TERM em um dos seus scripts de inicialização. Enquanto dentro da tela, seu TERM deve ser configurado para 'screen', não 'xterm-256color'.

Eu examinaria seus scripts de inicialização do shell. ~ / .bashrc, / etc / bash / bashrc, e possivelmente outros como ~ / .bash_profile e / etc / profile, dependendo de como você configurou tudo. Se você vir alguma configuração de TERM="...", precisará removê-las.

    
por 01.12.2011 / 23:34