Quando eu faço SSH em minha máquina kali do Fedora e tento executar um comando e pressiono TAB
para preenchê-lo automaticamente como abaixo ...
Então, no momento em que pressiono, TAB
faz o seguinte:
Observe isso primeiro sudo
? De alguma forma, ele simplesmente aparece e não passa de pixels na tela e não faz parte do comando se eu pressionar Enter. Então, se eu backspace
pressionar Enter completamente, o Sudo ainda permanecerá na tela, mas não haverá caixa de sudo
comando de ajuda se ele for realmente executado ao pressionar Enter.
Eu só poderia testar isso fazendo o mesmo na VM real e não existe esse problema. Alguma ideia do que está acontecendo aqui?
E se for importante, tive que gerar e alterar UUIDS para esta VM e adicionar chaves MOK, já que copiei descaradamente a pasta da VM ao alterar as distros em vez de cloná-la. E no meu sistema operacional Ubuntu anterior, esse problema não estava acontecendo.
Variáveis:
$TERM
estáxterm-256color
em ambos- A localidade está definida
UTF-8
em ambos
$PS1
na VM:
┌──(kali㉿kali-pc)-[~]
└─$ echo "$PS1"
%F{%(#.blue.green)}┌──${debian_chroot:+($debian_chroot)─}${VIRTUAL_ENV:+($(basename $VIRTUAL_ENV))─}(%B%F{%(#.red.blue)}%n㉿%m%b%F{%(#.blue.green)})-[%B%F{reset}%(6~.%-1~/…/%4~.%5~)%b%F{%(#.blue.green)}]
└─%B%(#.%F{red}#.%F{blue}$)%b%F{reset}
Editar: solução de problemas adicionais para descobrir "quando" isso acontece e "o que" faz
- Encontrado no preenchimento automático (quando há mais de 1 opção possível!), com
TAB
e nãoright-arrow
para completar a partir da última sugestão utilizada. - Também acontece toda vez que pressiono
ctrl+D
(de 1 caractere até completar o comando digitado no console) - Bagunça exatamente o primeiro espaço de 4 caracteres sempre a partir do
$
prompt, como visto abaixo
Digitei network
antes de pressionar TAB
e novamente, apenas os 4 primeiros foram afetados
Usando cd
um comando pequeno e pressionado TAB
e novamente os primeiros 4 caracteres ficaram confusos.
Editar 2: Simplesmente configurar PS1='$ '
'resolve' isso, mas isso não explica o que está acontecendo aqui.
A razão do problema era que meu sistema Kali estava rodando com um código de idioma POSIX onde cada caractere cabe em um único byte. Os caracteres gráficos no prompt eram todos caracteres multibyte UTF-8, de modo que o prompt acabou sendo quatro bytes maior que os caracteres exibidos. Como resultado, cada vez que a nova posição do cursor era calculada, ela ficava a quatro caracteres de distância da posição esperada.
A reconstrução de localidades e a escolha de uma localidade UTF-8 resolveram o problema: