LC_CTYPE que interrompe o preenchimento automático: qual é a causa desse problema?

12

Por alguma razão hoje, toda vez que eu clico em tab no terminal, isso aparece:

cat bash: warning: setlocale: LC_CTYPE: cannot change locale (en_CA)

Display all 150 possibilities? (y or n)

Esse em particular acontece quando eu digito cate pressiono TAB. Eu nunca mudei nenhuma configuração ou nada. Alguém sabe o que está acontecendo?

Estranho TAB
fonte
É en_CA(ou seja canadense Inglês) um local que você espera estar em?
Gilles 'SO- stop be evil'
2
você pode postar a saída do localecomando?
Penguin359
2
Tem certeza de que en_CAé um código de idioma válido (ou seja, existe no seu sistema e foi gerado por localedefou alguma ferramenta de geração de código de idioma semelhante)?
Se você quer uma resposta correta, por favor, responda a pergunta de @ penguin359, e dizer como você está conectado em seu sistema (diretamente no console ou remotamente com sshou putty.
dan

Respostas:

5

Tenho um palpite de que algo que o seu bash_completion está fazendo com que isso aconteça. Tente limpar a conclusão do bash temporariamente (até você sair) fazendo:

complete -r

Se isso esclarecer, é algo com a conclusão do bash; caso contrário, ainda pode ser um dos built-ins do bash

Gekitsuu
fonte
Tentei esta solução por último, porque os outros pareciam ser uma solução mais apropriada para um problema que persistia há muito tempo, mas era o que funcionava.
The Unfun Cat
5

Problema semelhante ao conectar via SSH a um servidor remoto (depois de instalar o oh-my-zsh no meu local, mas não sei se isso é relevante). Para fixar isso,

Na minha máquina local, editei o arquivo / etc / ssh / ssh_config, comentando a linha SendEnv

#SendEnv LANG LC_*

A conclusão da guia agora funciona sem o aviso na máquina remota

bash: aviso: setlocale: LC_CTYPE: não é possível alterar a localidade

acw
fonte
4

Eu tive um problema semelhante no meu servidor ubuntu (FlexiScale) e procurei uma solução por um tempo, mas não consegui encontrar nada adequado ... Ainda não tenho certeza se o que fiz foi o "caminho certo", mas parece funcionar.

O aviso que eu estava vendo era:

bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)

Para garantir que as localidades estejam atualizadas, fiz isso (não tenho certeza se isso era necessário):

# locale-gen --purge

localeno meu sistema estava mostrando o LC_CTYPE="UTF-8"que não parecia certo para mim, então mudei o meu /etc/default/localepara ficar assim:

LANG="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"

(Adicionei a segunda linha.) Após o login novamente, os avisos desapareceram.

inkredibl
fonte
3
A fixação LC_CTYPEpara ser um valor válido foi o que aconteceu. Você não precisa LANG(e na verdade eu recomendo ). Você pode ver os nomes de código de idioma válidos em seu sistema executando locale -a. No Ubuntu, execute sudo localegen xx_YYpara gerar o xx_YYcódigo do idioma (supondo que ele possa ser gerado).
Gilles 'SO- stop be evil'
1

Se você receber uma mensagem de erro / aviso semelhante a essa ao pressionar Tab para o preenchimento automático do comando bash:

bash: warning: setlocale: LC_CTYPE: cannot change locale (id_ID.UTF-8)

A solução é:

  1. Instale o código do idioma necessário. No meu caso, este é o "id":

    sudo apt-get install language-pack-id
  2. Reconfigure as localidades:

    sudo dpkg-reconfigure locales

Agora, a conclusão do bash Tab deve funcionar perfeitamente. :-)

Fonte: http://ubuntucomputing.blogspot.com/2011/12/how-to-fix-error-bash-warning-setlocale.html

Hendy Irawan
fonte
0

Eu estava tendo o mesmo problema. Eu tentei algumas das soluções aqui, mas quando tentei executar locale-gen, meu sistema disse que não conseguia encontrar o comando. Acontece que é uma parte do localespacote que eu não instalei. Então eu instalei, corri locales-gene agora funciona!

user394
fonte
0

Resolvido permanentemente com a criação do arquivo

/etc/default/locale

Com conteúdo

LC_ALL="en_US.UTF-8"

Veja a resposta no github

Langosh
fonte