LC_CTYPE Autovervollständigung abbrechen: Was ist die Ursache für dieses Problem?


12

Aus irgendeinem Grund wird heute jedes Mal, wenn ich im Terminal die Tabulatortaste drücke, Folgendes angezeigt:

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

Display all 150 possibilities? (y or n)

Dieses spezielle Problem tritt auf, wenn ich tippe und catdann die Tabulatortaste drücke. Ich habe nie eine Einstellung oder etwas geändert. Weiß jemand, was los ist?


Ist en_CA(dh kanadisches Englisch) ein Gebietsschema, in dem Sie voraussichtlich sein werden?
Gilles 'SO - hör auf, böse zu sein',

2
Können Sie die Ausgabe des localeBefehls veröffentlichen?
Pinguin359

2
Sind Sie sicher, dass en_CAes sich um ein gültiges Gebietsschema handelt (dh, es ist auf Ihrem System vorhanden und wurde von einem localedefoder einem ähnlichen Tool zur Generierung von Gebietsschemas generiert)?

Wenn Sie eine korrekte Antwort wünschen, beantworten Sie bitte die Frage von @ penguin359 und teilen Sie mit, wie Sie mit Ihrem System verbunden sind (direkt an der Konsole oder remote mit sshoder putty.
dan

Antworten:


5

Ich habe die Vermutung, dass dies durch Ihre Bash-Vervollständigung verursacht wird. Versuchen Sie, die Bash-Vervollständigung vorübergehend zu löschen (bis Sie den Vorgang beenden), indem Sie folgende Schritte ausführen:

complete -r

Wenn das klärt, dann ist es etwas mit Bash-Vervollständigung, wenn nicht, könnte es immer noch eines der eingebauten Bash-Programme sein


Versuchte diese Lösung zuletzt, weil die anderen wie eine angemessenere Lösung für ein Problem schienen, das seit Ewigkeiten bestand, aber dies war die Lösung, die funktionierte.
The Unfun Cat

5

Ähnliches Problem bei der Verbindung über SSH mit einem Remote-Server (nachdem oh-my-zsh auf meinem lokalen Server installiert wurde, aber ich bin nicht sicher, ob dies relevant ist). Etwas reparieren,

Auf meinem lokalen Computer habe ich die Datei / etc / ssh / ssh_config bearbeitet und die SendEnv-Zeile kommentiert

#SendEnv LANG LC_*

Die Tab-Vervollständigung funktioniert jetzt ohne die Warnung auf dem Remotecomputer

Bash: Warnung: Setlocale: LC_CTYPE: Das Gebietsschema kann nicht geändert werden


4

Ich hatte ein ähnliches Problem auf meinem Ubuntu-Server (FlexiScale) und habe eine Weile nach einer Lösung gesucht, konnte aber nichts Passendes finden.

Die Warnung, die ich sah, war:

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

Um sicherzustellen, dass die Ländereinstellungen auf dem neuesten Stand sind, habe ich Folgendes getan (nicht sicher, ob dies erforderlich ist):

# locale-gen --purge

localeAuf meinem System wurde angezeigt, LC_CTYPE="UTF-8"was für mich nicht richtig aussah, und ich habe es folgendermaßen geändert /etc/default/locale:

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

(Ich habe die zweite Zeile hinzugefügt.) Nach dem erneuten Anmelden waren die Warnungen verschwunden.


3
Es hat sich bewährt LC_CTYPE, ein gültiger Wert zu sein. Das brauchst du nicht LANG(und eigentlich empfehle ich dagegen ). Sie können die gültigen Gebietsschemanamen auf Ihrem System anzeigen, indem Sie ausführen locale -a. Führen Sie unter Ubuntu sudo localegen xx_YYden xx_YYBefehl aus , um das Gebietsschema zu generieren (vorausgesetzt, es kann generiert werden).
Gilles 'SO - hör auf böse zu sein'

1

Wenn beim Drücken der Tabulatortaste für die automatische Vervollständigung des Bash-Befehls eine ähnliche Fehler- / Warnmeldung angezeigt wird:

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

Lösung ist:

  1. Installieren Sie das erforderliche Gebietsschema. In meinem Fall ist dies die "ID":

    sudo apt-get install language-pack-id
  2. Gebietsschemas neu konfigurieren:

    sudo dpkg-reconfigure locales

Jetzt sollte die Bash-Tab-Vervollständigung gut funktionieren. :-)

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


0

Ich hatte das gleiche Problem. Ich hatte hier einige der Lösungen ausprobiert, aber als ich versuchte zu laufen locale-gen, sagte mein System, dass es den Befehl nicht finden konnte. Es stellt sich heraus, dass es ein Teil des localesPakets ist, das ich nicht installiert habe. Also habe ich es installiert, lief locales-genund jetzt funktioniert es!


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.