Ich habe gerade CentOS 6 installiert und erhalte bei jeder Remote-Anmeldung über SSH den folgenden Fehler:
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)
Wenn ich "locale" in die Befehlszeile eingebe, erhalte ich die folgende Ausgabe:
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Woran kann das liegen? Wie kann ich dieses Problem lösen?
Antworten:
Haben Sie auf dem Server, von dem Sie ssh verwenden, ein Gebietsschema über eine Umgebungsvariable festgelegt? Wenn ich meine CentOS 6-Installation betrachte, wird das einzige Gebietsschema, das ich als unterstützt finde, als
en_US.utf8
(mit demlocale -a
Befehl ermittelt) identifiziert . Könnte dies das Problem sein?Als ich in meinem Test die
LC_ALL
Umgebungsvariable auf "en_US.UTF-8
ssh'd to the server" stellte, wurdePOSIX
in meinem Fall die Ausgabe meines Gebietsschemabefehls auf " ssh'd to the server" gesetzt . Dies ist dasselbe, als hätte ich dieLC_ALL
Variable vor dem ssh'ing NICHT gesetzt (dh aufgehoben).Wenn ich meine
LC_ALL
Variable aufen_US.utf8
oderen_US.utf-8
auf meine CentOS 6-Box setze, stimmt die Ausgabe des Gebietsschemas mit der Ausgabe der Quellbox überein.Beachten Sie, dass ich für UTF auch keine Caps verwendet habe.
quelle
Dies wurde behoben, indem "Umgebungsvariablen für das Gebietsschema beim Start festlegen" in den Terminaleinstellungen> Erweitert deaktiviert wurde (siehe Abbildung).
HINWEIS: Wenn Sie iTerm2 verwenden, können Sie die Option "Gebietsschemavariablen automatisch festlegen" unter Einstellungen> Profile> Terminal deaktivieren
quelle
unset LC_CTYPE
oderexport LC_CTYPE=en_US.UTF-8
Behebung des Problems nach der Anmeldung.Einfacher Weg:
Hinzufügen
zu
/etc/sysconfig/i18n
.quelle
Was für mich funktionierte, war das Hinzufügen eines Symlinks auf dem CentOS-Server:
Sobald Sie dies getan haben, funktionieren die folgenden Befehle:
Wenn Sie dies nicht tun, schlägt der letzte Befehl mit dem folgenden Fehler fehl:
Eine noch einfachere Lösung besteht darin, die folgende Zeile zu / etc / bashrc auf dem Server hinzuzufügen:
quelle
Ich habe diese spezielle Meldung erhalten, wenn ich mich von einem Solaris X auf einem Centos-Host anmelde.
Das Problem kommt von 2 Einstellungen:
Gebietsschemabezogene Umgebungsvariablen senden SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
Auf meinem Quellhost wurden diese Einstellungen folgendermaßen festgelegt:
SOURCE # LANG = LC_CTYPE = fr_FR.UTF-8 LC_NUMERIC = fr_FR.UTF-8 LC_TIME = fr_FR.UTF-8 LC_COLLATE = fr_FR.UTF-8 LC_MONETARY = fr_FR.UTF-8 LC_MESSAGES = fr.UTF-8 LC_ALL
Wie Sie jedoch sehen können, ist LC_MESSAGES auf fr.UTF-8 eingestellt, was auf meinem Zielhost keine Option ist.
Das Problem wurde auf meinem Quellhost unter .bash_profile behoben: # export LC_ALL = fr_FR.UTF-8 export LANG = fr_FR.UTF-8
Ich hätte es lösen können, indem ich meinen Zielhost gebeten hätte, diese Variable nicht von einer SSH-Verbindung zu nehmen (im Allgemeinen oder indem ich eine ssh_config-Datei für meinen Benutzer erstellt hätte).
quelle
Auf einem lokalen Centos 6.2-System: Dies hat nicht geholfen:
Das hat funktioniert:
Ich löschte auch
locale-archive
in/usr/lib/locale
. Ich weiß nicht, ob das nötig war.quelle
Dies war in der Vergangenheit meine Korrektur für Gebietsschemafehler.
Führen Sie Folgendes aus: locale-gen
Dann editiere /etc/locale.gen. Stellen Sie sicher, dass Folgendes nicht kommentiert ist:
quelle
Bei Iterm2 ist das anders.
Gehen Sie zu
Iterm2 -> Preferences
und dann zurProfiles
Registerkarte und wählen Sie dieTerminal
Registerkarte unten aus.Gehen Sie zur
Environment
Kategorie und heben Sie die Markierung auf.Schließen Sie abschließend eine neue Sitzung und starten Sie sie.
quelle
und stellen Sie sicher, dass
LC_ALL="en_US.UTF-8"
es sich in / etc / sysconifg / i18n befindet oder hinzugefügt wurdeBeispiel Inhalt
quelle
bearbeiten
/etc/sysconfig/i18n
Wechseln Sie
LANG="us"
zuLANG="en_US"
Speichern und beenden, abmelden und wieder anmelden.
quelle