bash começa a substituir os caracteres na linha atual, ao invés de passar para a próxima linha

1

Eu uso o shell bash

$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$

Às vezes, ao digitar um comando no prompt que é bastante longo e não cabe na linha atual, em vez de exibir os caracteres extras na próxima linha, o bash inicia novamente na linha atual. Substituindo os caracteres que estavam lá e fazendo uma bagunça.

o que deveria acontecer:

|---------------------------------------------|
| $ my big long command takes a lot of argumen|
| s and does not fit in a single line         |
|                                             |
|---------------------------------------------|

o que acontece:

|---------------------------------------------|
| s and does not fit in a single linef argumen|
|                                             |
|                                             |
|---------------------------------------------|
  • O problema é intemittente
  • Se eu redimensionar minha janela do shell para uma largura muito pequena, o comportamento normal será restaurado

Alguém tem alguma idéia do que está acontecendo aqui?


$ echo $TERM
xterm
$ echo $PS1
\[\e[30m\][\t]\[\e[0m\]\[\e]0;\w\a\]\[\e[30m\][\W]$
$
lazer
fonte
Qual emulador de terminal você está usando? O que está TERMdefinido? Você tem alguma cor ou outra sequência de formatação na sua PS1?
Dennis Williamson
@ Dennis: atualizado.
Lazer
Qual emulador de terminal você está usando (PuTTY, gnome-terminal, etc.)?
Dennis Williamson
@ Dennis: Não tenho certeza. Eu VNC para a máquina para usá-lo.
Lazer
2
Experimente shopt -s checkwinsizeou coloque no seu ~/.bashrc. (O comando faz bashreavaliar o tamanho da janela cada vez que o prompt é exibido.)
grawity

Respostas:

0

Seu shell está ficando confuso sobre a largura do seu terminal. Sempre que isso acontece, um eval `resize`deve redefinir tudo corretamente.

Phil Hollenback
fonte