O console serial não está apagando a exibição

1

Estou fazendo login em uma instalação do Arch Linux em execução em uma placa de desenvolvimento ARM via conexão serial USB. A instalação correu bem e tudo parece bem. No entanto, meu console está se comportando de maneira estranha; não parece estar limpando a linha em resposta a vários comandos. Exemplos são mais fáceis de entender (embora difíceis de descrever):

$ mkdir test
*Press delete*
$ mkdir test*space*

Eu sei que a exclusão está funcionando, porque a execução do comando acima cria um diretório tes . Ele simplesmente não parece ter o comportamento correto na exibição do comando. Eu verifiquei 'stty -a' e apague está correto (^?). É mais evidente usando a história do bash:

$ mkdir test
$ cd test
*Up Arrow* *Up Arrow*
$ cd testmkdir test

Eu tentei fazer o login na placa via tela e um programa GUI separado, e ambos demonstram o mesmo comportamento. Tenho certeza de que esse é um erro de configuração simples, mas não consigo encontrar nenhuma outra pergunta em que isso esteja acontecendo. Alguma idéia?

    
por Nick 20.09.2018 / 05:30

1 resposta

1

Sua variável de ambiente TERM vista pela biblioteca GNU Readline no shell Bourne Again deve indicar o registro correto no banco de dados terminfo que corresponde ao que o terminal no final de sua conexão serial é realmente .

Se você tiver um tipo de terminal comutável em um emulador de terminal no final de sua conexão serial, a variável TERM deve alternar para corresponder à configuração atual.

Tradicionalmente, um terminal real local permanece fisicamente conectado à mesma linha serial, e o administrador do sistema faz uma mudança única na configuração, de modo que o programa getty seja invocado com o tipo de terminal correto. Nesses dias de PCs rodando programas emuladores conectados a seus dispositivos seriais, fingindo serem terminais reais, é preciso manter o emulador configurado da mesma forma ou reconfigurar o sistema host sempre que o programa emulador for alterado.

Atualmente, há uma incompatibilidade e as seqüências de controle que a biblioteca GNU Readline emite para mover o cursor para trás, que leu do registro TERM -denoted no banco de dados terminfo, não correspondem ao controle sequência (s) que o seu terminal ou emulador de terminal reconhece de fato para mover o cursor para trás.

(Deletando para a esquerda quando no final da linha que está sendo inserida é decretada por Readline movendo o cursor para trás, imprimindo um espaço e movendo o cursor para trás novamente Observe que Readline sempre usa o recurso cub , nunca a capacidade cub1 Nenhum terminal usa o caractere em seu cub Então, como o seu terminal responde ao é um arenque vermelho, é como ele responde à seqüência real de controle na capacidade cub que é importante.

Os caracteres especiais de disciplina de linha listados por stty são um arenque vermelho por dois motivos. Eles são entrada processando não relacionados às seqüências de controle output usadas pela biblioteca GNU Readline. E o GNU Readline coloca o terminal no modo de entrada não-canônico de qualquer maneira quando a edição de uma linha de comando está realmente acontecendo.

Leitura adicional

por 20.09.2018 / 10:58