LC_CTYPE przerywa autouzupełnianie: jaka jest przyczyna tego problemu?


12

Z jakiegoś powodu dzisiaj, za każdym razem, gdy naciskam klawisz Tab w terminalu, pojawia się:

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

Display all 150 possibilities? (y or n)

Ten konkretny dzieje się, gdy piszę, cata następnie wciskam TAB. Nigdy nie zmieniłem żadnego ustawienia ani niczego. Czy ktoś wie, co się dzieje?


Czy en_CA(tj. Angielski w Kanadzie) jest miejscem, w którym się spodziewasz?
Gilles „SO- przestań być zły”

2
czy możesz opublikować wynik localepolecenia?
penguin359

2
Czy jesteś pewien, że en_CAjest to poprawna lokalizacja (to znaczy, że obie istnieją w twoim systemie i zostały wygenerowane przez localedeflub podobne narzędzie do generowania ustawień narodowych)?

Jeśli chcesz uzyskać poprawną odpowiedź, odpowiedz na pytanie od @ penguin359 i powiedz, w jaki sposób jesteś podłączony do systemu (bezpośrednio na konsoli lub zdalnie za pomocą sshlub putty.
dan

Odpowiedzi:


5

Mam przeczucie, że coś spowodowało twoje bash_completion. Spróbuj tymczasowo usunąć zakończenie bashu (do momentu wyjścia), wykonując:

complete -r

Jeśli to wyjaśni, to jest to coś z ukończeniem bash, jeśli nie, to nadal może być jednym z wbudowanych bashów


Próbowałem tego rozwiązania na końcu, ponieważ inni wydawali się bardziej odpowiednim rozwiązaniem problemu, który utrzymywał się przez wieki, ale to był ten, który zadziałał.
The Unfun Cat

5

Podobny problem podczas łączenia przez SSH ze zdalnym serwerem (po zainstalowaniu oh-my-zsh na moim lokalnym, ale nie jestem pewien, czy to istotne). Naprawić to,

Na moim komputerze lokalnym edytowałem plik / etc / ssh / ssh_config, komentując linię SendEnv

#SendEnv LANG LC_*

Uzupełnianie tabulatorów działa teraz bez ostrzeżenia na zdalnym komputerze

bash: ostrzeżenie: setlocale: LC_CTYPE: nie można zmienić ustawień regionalnych


4

Miałem podobny problem na moim serwerze ubuntu (FlexiScale) i szukałem rozwiązania przez jakiś czas, ale nie mogłem znaleźć niczego odpowiedniego ... Nadal nie jestem pewien, czy to, co zrobiłem, jest „właściwą drogą”, ale wydaje się, że działa.

Ostrzeżenie, które widziałem to:

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

Aby upewnić się, że ustawienia regionalne są aktualne, zrobiłem to (nie jestem pewien, czy było to konieczne):

# locale-gen --purge

localew moim systemie pokazywałem, LC_CTYPE="UTF-8"co nie wyglądało mi dobrze, więc zmieniłem mój /etc/default/localewygląd tak:

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

(Dodałem drugą linię.) Po ponownym zalogowaniu ostrzeżenia zniknęły.


3
Naprawiono LC_CTYPEto, ustawiając poprawną wartość. Nie potrzebujesz LANG(a właściwie odradzam ). Możesz zobaczyć poprawne nazwy ustawień regionalnych w systemie, uruchamiając locale -a. W systemie Ubuntu uruchom, sudo localegen xx_YYaby wygenerować xx_YYustawienia narodowe (zakładając, że można je wygenerować).
Gilles 'SO - przestań być zły'

1

Jeśli pojawi się komunikat o błędzie / ostrzeżenie podobny do tego po naciśnięciu klawisza Tab dla autouzupełniania poleceń bash:

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

Rozwiązaniem jest:

  1. Zainstaluj wymagane ustawienia regionalne. W moim przypadku jest to „id”:

    sudo apt-get install language-pack-id
  2. Ponownie skonfiguruj ustawienia regionalne:

    sudo dpkg-reconfigure locales

Teraz uzupełnianie kart bash powinno działać dobrze. :-)

Źródło: http://ubuntucomputing.blogspot.com/2011/12/how-to-fix-error-bash-warning-setlocale.html


0

Miałem ten sam problem. Próbowałem tutaj niektórych rozwiązań, ale kiedy próbowałem uruchomić locale-gen, mój system powiedział, że nie może znaleźć polecenia. Okazuje się, że jest to część localespakietu, której nie zainstalowałem. Więc zainstalowałem, uruchomiłem locales-gen, a teraz działa!


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.