Właśnie zainstalowałem CentOS 6 i za każdym razem, gdy loguję się do systemu przez SSH zdalnie, pojawia się następujący błąd:
-bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8)
Gdy wpisuję „locale” w wierszu polecenia, otrzymuję następujące dane wyjściowe:
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=
Co może być problemem? Jak mogę rozwiązać ten problem?
Odpowiedzi:
Czy na serwerze, z którego korzystasz ssh, masz ustawienia regionalne za pomocą zmiennej środowiskowej? Patrząc na moją instalację CentOS 6, jedyne ustawienia narodowe, które mogę znaleźć obsługiwane, są identyfikowane jako
en_US.utf8
(wykryte za pomocąlocale -a
polecenia). Czy to może być problem?W moich testach, kiedy ustawiłem
LC_ALL
zmienną środowiskową naen_US.UTF-8
ssh'd na serwer,POSIX
w moim przypadku ustawiono wyjście polecenia locale . To tak samo, jak kiedy NIE ustawiłem (tjLC_ALL
. Nie rozbroiłem ) zmiennej przed ssh'ing.Kiedy ustawiłem
LC_ALL
zmienną naen_US.utf8
luben_US.utf-8
, ssh'd na moją skrzynkę CentOS 6, dane wyjściowe ustawień narodowych były takie same, jak ustawione na źródłowej.Zauważ, że nie użyłem żadnych ograniczeń dla UTF.
źródło
Rozwiązano ten problem, wyłączając opcję „Ustaw zmienne środowiskowe podczas uruchamiania” w Ustawieniach terminala> Zaawansowane zgodnie z tym zrzutem ekranu.
UWAGA: Jeśli korzystasz z iTerm2, możesz wyłączyć opcję „Ustaw automatycznie zmienne regionalne” w Preferencje> Profile> Terminal
źródło
unset LC_CTYPE
lubexport LC_CTYPE=en_US.UTF-8
fixup problem po zalogowaniu.Prosta droga:
Dodaj
do
/etc/sysconfig/i18n
.źródło
Dla mnie zadziałało dodanie linku symbolicznego na serwerze CentOS w następujący sposób:
Po wykonaniu tych poleceń, takie jak ta praca:
Jeśli nie, to ostatnie polecenie kończy się niepowodzeniem z tym błędem:
Teraz jeszcze prostszym rozwiązaniem jest dodanie tej linii do / etc / bashrc na serwerze:
źródło
Mam ten konkretny komunikat podczas logowania z systemu Solaris X do hosta Centos.
Problem pochodzi z 2 ustawień:
Wyślij zmienne środowiskowe związane z ustawieniami lokalnymi SendEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
Na moim hoście źródłowym te ustawienia zostały ustawione w następujący sposób:
ŹRÓDŁO # 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 =
Ale, jak widać, LC_MESSAGES jest ustawiony na fr.UTF-8, co nie jest opcją na moim docelowym hoście.
Problem został rozwiązany, wymuszając na moim hoście źródłowym, na .bash_profile: # eksport LC_ALL = fr_FR.UTF-8 eksport LANG = fr_FR.UTF-8
Mógłbym to rozwiązać, prosząc mojego docelowego hosta, aby nie pobierał tej zmiennej z żadnego połączenia ssh (ogólnie lub tworząc plik ssh_config dla mojego użytkownika)
źródło
W lokalnym systemie Centos 6.2: To nie pomogło:
To działało:
Ja również usunięte
locale-archive
w/usr/lib/locale
. Nie wiem, czy to było konieczne.źródło
To była moja poprawka w przeszłości dla błędów regionalnych.
Uruchom następujące polecenie: locale-gen
Następnie edytuj /etc/locale.gen. Upewnij się, że następujące komentarze nie są uwzględnione:
źródło
Z Iterm2 jest inaczej.
Idź do
Iterm2 -> Preferences
, a następnie Idź doProfiles
karty i wybierzTerminal
kartę od dołu.Przejdź do
Environment
kategorii i odznacz;Na koniec zamknij i rozpocznij nową sesję.
źródło
i upewnij się
LC_ALL="en_US.UTF-8"
jest w / etc / sysconifg / i18n lub został dodanyprzykładowa treść
źródło
edytować
/etc/sysconfig/i18n
Zmiana
LANG="us"
naLANG="en_US"
Zapisz i wyjdź, wyloguj się i zaloguj ponownie.
źródło