Longos comandos digitados no bash sobrescrevem a mesma linha

4

Como atualizamos o Bash para o 4.3.27 sempre que eu digito um comando longo, se ele chegar ao final da janela do terminal, em vez de continuar em uma nova linha, ele sobrescreve a mesma linha usando um ">" no começo para marcar que a linha estava enrolada (eu posso voltar e avançar na linha. Quero dizer, isso não substitui apenas a linha atual)

Algo como:

Digamos que meu terminal tenha 30 caracteres de largura

antes da atualização user@HOSTNAME ~$ echo "hello w orld!"

Após a atualização <ME ~$ echo "hello world!"

Nada foi alterado no meu ambiente desde a atualização do bash. $BASHOPTS mostra os mesmos valores de antes, exceto "complete_fullquote"

Como posso restaurar o "comportamento multilinha"?

Atenciosamente

    
por vegatripy 04.12.2014 / 16:52

2 respostas

4

Altere sua variável TERM. Por exemplo, se eu fizer

~$ export TERM=xterm

Então o comportamento é muito bom, como antes de sua atualização

com

~$ export TERM=linux

O comportamento é o seguinte após a atualização

Este post no askubuntu pode ajudá-lo se você tiver um PS1 colorido.

    
por 04.12.2014 / 16:57
2

Resposta curta:

echo "set horizontal-scroll-mode off" >> ~/.inputrc

Resposta mais longa:

Em um shell bash interativo, a entrada do usuário é manipulada pela biblioteca READLINE (procure por ela na man page do bash para obter mais informações). Por bash documentação, o comportamento padrão é para quebrar uma nova linha quando a entrada é maior que a largura da tela. Você pode substituir esse padrão definindo a variável horizontal-scroll-mode .

Como você não consegue o comportamento padrão, verifique:

  • o arquivo apontado por $ INPUTRC para ver se o modo de rolagem horizontal está definido. Vale a pena notar que uma variável readline é definida se ela for vazia, nula, on (não diferencia maiúsculas de minúsculas) ou 1.
  • as opções de configuração usadas se você compilou sua versão do bash
por 08.01.2015 / 19:44