LC_CTYPE cassant la saisie semi-automatique: quelle est la cause de ce problème?


12

Pour une raison quelconque aujourd'hui, chaque fois que je clique sur l'onglet dans le terminal, cela apparaît:

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

Display all 150 possibilities? (y or n)

Celui-ci se produit lorsque je tape catpuis appuie sur TAB. Je n'ai jamais changé de paramètre ou quoi que ce soit. Quelqu'un sait ce qui se passe?


Est-ce en_CA(c.-à-d. Anglais canadien) un endroit où vous vous attendiez?
Gilles 'SO- arrête d'être méchant'

2
pouvez-vous publier la sortie de la localecommande?
penguin359

2
Êtes-vous sûr qu'il en_CAs'agit d'un paramètre régional valide (c'est-à-dire qu'il existe à la fois sur votre système et a été généré par localedefou un outil de génération de paramètres régionaux similaire)?

Si vous voulez une bonne réponse, s'il vous plaît répondre à la question de @ penguin359, et dire comment vous êtes connecté sur votre système (directement sur la console ou à distance avec sshou putty.
dan

Réponses:


5

J'ai le pressentiment que quelque chose que votre bash_completion provoque cela se produit. Essayez d'effacer temporairement votre complétion bash (jusqu'à ce que vous quittiez) en faisant:

complete -r

Si cela clarifie les choses, c'est quelque chose avec l'achèvement de bash, sinon ce pourrait encore être l'un des intégrés de bash


J'ai essayé cette solution en dernier, parce que les autres semblaient être une solution plus appropriée à un problème qui avait persisté pendant des siècles, mais c'était celui qui fonctionnait.
The Unfun Cat

5

Problème similaire lors de la connexion via SSH à un serveur distant (après avoir installé oh-my-zsh sur mon local, mais je ne suis pas sûr que ce soit pertinent). Réparer,

Sur ma machine locale, j'ai édité le fichier / etc / ssh / ssh_config, en commentant la ligne SendEnv

#SendEnv LANG LC_*

L'achèvement des onglets fonctionne désormais sans avertissement sur la machine distante

bash: avertissement: setlocale: LC_CTYPE: impossible de modifier les paramètres régionaux


4

J'ai eu un problème similaire sur mon serveur Ubuntu (FlexiScale) et j'ai cherché une solution pendant un certain temps mais je n'ai rien trouvé de convenable ... Je ne sais toujours pas si ce que j'ai fait est la "bonne façon", mais cela semble fonctionner.

L'avertissement que je voyais était:

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

Pour m'assurer que les paramètres régionaux sont à jour, je l'ai fait (je ne sais pas si c'était nécessaire):

# locale-gen --purge

localesur mon système montrait LC_CTYPE="UTF-8"ce qui ne me semblait pas bien, j'ai donc changé mon /etc/default/localepour ressembler à ceci:

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

(J'ai ajouté la deuxième ligne.) Après la reconnexion, les avertissements ont disparu.


3
Fixer LC_CTYPEpour être une valeur valide l'a fait. Vous n'en avez pas besoin LANG(et en fait je le déconseille ). Vous pouvez voir les noms de paramètres régionaux valides sur votre système en exécutant locale -a. Sur Ubuntu, exécutez sudo localegen xx_YYpour générer les xx_YYparamètres régionaux (en supposant qu'ils puissent être générés).
Gilles 'SO- arrête d'être méchant'

1

Si vous obtenez un message d'erreur / d'avertissement similaire à celui-ci lorsque vous appuyez sur Tab pour l'autocomplétion de la commande bash:

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

La solution est:

  1. Installez les paramètres régionaux requis. Dans mon cas, c'est le "id":

    sudo apt-get install language-pack-id
  2. Reconfigurez les paramètres régionaux:

    sudo dpkg-reconfigure locales

Maintenant, l'achèvement de bash Tab devrait très bien fonctionner. :-)

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


0

J'avais le même problème. J'avais essayé certaines des solutions ici, mais quand j'ai essayé de lancer locale-gen, mon système a dit qu'il ne pouvait pas trouver la commande. Il s'avère que cela fait partie du localespackage que je n'ai pas installé. Je l'ai donc installé, exécuté locales-genet maintenant cela fonctionne!


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.