Bash: não pode digitar 'e' ou vou repetir infinitamente 'H's

2

No meu local de trabalho, existem várias redes independentes com as quais trabalho, todas executando várias versões do RedHat Linux 4, 5 e 6.

Em uma dessas redes, não posso usar o bash (ou, como estou descobrindo, qualquer coisa que use o front-end do bash como python, gdb, etc) porque quando tento digitar isso:

> exit

Em vez disso, obtenho:

> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH<control-C>

Até eu clicar em control-C (para bash ou gdb) ou, em outro terminal, fazer um python killall para python.

Meu principal shell de trabalho é o tcsh, mas eu uso o bash para todos os meus scripts. Eu também caio no shell interativamente às vezes para fazer loops simples e afins. Por sorte, 'exit' está no meu histórico, então posso usar a seta para cima para recuperá-lo e sair.

Só para ficar claro: isso só acontece quando eu executo esses programas interativamente. Não importa se eu iniciei o shell:

> bash

> bash --login

> env bash --login

> env bash

Isso acontece se eu remover meus arquivos bash_profile e bashrc ou não. AFAIK, não há nada no perfil do sistema que cause isso.

Eu estou completamente sem saber como encontrar isso! Eu apreciaria muito qualquer ajuda que alguém pudesse oferecer!

TIA!

    
por iAdjunct 04.02.2015 / 14:07

2 respostas

4

Então, com a ajuda de uma sugestão da choroba, descobri.

Nesse ambiente, eles têm a política idiota de quase forçar todos a fornecer todos os mesmos arquivos de recursos, além de sua própria configuração. Um dia, eles mudaram algo e quebraram metade de nossas conchas.

No processo de tentar consertar isso, coloquei instruções de impressão nos vários perfis e arquivos de recursos para que eu pudesse ver quais estavam sendo executados para rastrear porque as coisas estavam quebradas.

Eu não percebi que, ao contrário de todos os outros arquivos terminados em 'rc', o '.inputrc' não funciona, ele é PARSED. E é analisado de forma estranha. Então, eu tive isso no .inputrc:

echo "Hello..."

Que de alguma forma foi interpretado pelo sistema de ligação (que aparentemente apenas bash, gdb, python e talvez algumas outras coisas que eu ainda não tinha usado, na verdade) como 'quando o usuário digita e, imprime H infinitamente'. Qual é claramente o que eu quis dizer.

Agora tenho um bash funcional, python e gdb! Obrigada!

    
por 05.02.2015 / 00:34
3

um rápido hack,

$ i () { printf "%x" 14;}

ou

$ i () { printf \x65;}
$ l'i'ss
Missing filename ("less --help" for help)
$ 'i'xit

outro hack,

$ E^b^[l

Isso torna E menor.

Isso pode ajudar,

$ bind -m 'i'macs
    
por 04.02.2015 / 17:06