LC_CTYPE을 기본 로케일로 설정할 수 없습니다. 해당 파일 또는 디렉토리가 없습니다.


54

나는 이것과 같은 정확한 질문을 가지고 있지만 해결책은 없습니다. 시도했지만 작동하지 않습니다

로케일 문제를 어떻게 해결합니까?

$ locale
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
LANGUAGE=
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=

$ locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
C
C.UTF-8
en_US.utf8
POSIX

en_US.UTF-8과 en_US.utf8이 일치하지 않기 때문입니까?

어떻게 고치는 지?


askubuntu.com/a/229512/387382 를 읽었습니까 ?
Helio

답변:


53

터미널을 열고 아래 명령을 실행하십시오.

export LC_ALL="en_US.UTF-8"

이것은 효과가 있지만 왜?
Yu Jiaao

16
세션이 끝날 때 변수가 파괴 되었기 때문에 이것은 아무것도 해결되지 않습니다.
Etienne Gautier


작은 말로 훌륭한 해결책. 롤!
레드 밥

1
이 VAR를 내보낼 때 내가 얻을 :-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
nnyby

35

Mac에서 Linux 박스로 ssh를 통해 로그인 할 때 이와 동일한 문제 (LC_CTYPE = UTF-8, 잘못된)가 발생할 수 있으며 터미널은 자동으로 환경 변수를 설정합니다. 확인란이 있습니다. 선택을 해제하면 잘됩니다. iTerm에서는 프로파일-> 터미널 탭에 있습니다.


2
iTerm에서 "환경 설정> 프로필> 기본> 터미널> 환경> 로케일 변수 자동 설정"체크 상자를 비활성화하십시오.
ecerulm

1
-1 : 이것이 효과가 있지만 매우 침습적입니다. 또한 로컬 터미널의 동작과 연결하는 모든 호스트의 동작에 영향을 줄 수 있습니다. 찾은 결과는 사실이지만 ssh_config를 사용하여 문제가있는 것으로 알려진 호스트에 대해 LC_ *를 보내지 않는 것이 좋습니다.
Max Ried

3
이것이 왜 로컬 터미널의 동작에 영향을 미치는지, LC_ *를 보내지 않도록 ssh_config에 지시하는 방법에 대한 자세한 설명과 함께 자신의 답변을 추가 할 수 있습니까? 당신은 실제 설명없이 단지 -1 나의 대답이기 때문입니다.
raarts

터미널을 사용하여 MacOS에서 연결하는 경우 터미널 설정> 고급으로 이동하여 "시작시 로케일 환경 변수 설정"을 선택 취소하십시오.
javaxian

일어날 것 같습니다 : 로컬 시스템에서 일부 로캘을 설치 한 다음이 시스템이 설치되어 있지 않은 다른 시스템으로 ssh하십시오. 터미널 클라이언트는 원격 시스템에 사용자의 로캘이 무엇인지 알려주고 요청 된 언어로 원격 시스템이 응답하지 않습니다. 이를 해결하는 두 가지 방법이 있습니다. 변경, 요청한 내용 또는 요청 된 로케일을 원격 시스템에 추가 (루트 액세스가 필요함).
1

27

비슷한 문제가 있었고 /etc/default/locale파일에 아래 줄을 추가했습니다 .

LC_CTYPE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"

이 게시물 에서이 정보를 얻었습니다. 로케일 문제를 어떻게 해결합니까?


3
글쎄, 그렇게하면 매우 지저분한 로케일 구성으로 끝납니다. /etc/environment우분투에서 로케일을 설정하기위한 것이 아닙니다. /etc/default/locale입니다. 또한 데스크탑의 경우 절대 LC_ALL영구적 으로 설정해서는 안됩니다 . 언어 지원과 같은 데스크탑에서 언어 / 로케일 설정을 제어하기위한 UI를 사용할 수 없게됩니다.
Gunnar Hjalmarsson 2016 년

이것은 실제로 작동합니다. 재부팅 후.
TranslucentCloud

로그 아웃 및 로그인, 작동해야 함
Sand1512


9
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

나는 질문에서와 같이 거의 깨끗한 Vultr 인스턴스를 실행하고 환경 변수를 조사했으며 모든 것이 올바르게 보였습니다. 그러나 sudo dpkg-reconfigure locales빠졌어야 할 일이있었습니다. 내 ssh 세션은 이제 정상입니다. 감사!
Jonas

6

locale명령 의 출력은 사용자 환경에이 잘못된 행이 있음을 나타냅니다.

LC_CTYPE="UTF-8"

( "UTF-8"은 유효한 로캘 이름이 아닙니다.)

일반적으로에서 제공됩니다 /etc/default/locale. 해당 라인이 있으면 제거하고 다시 로그인하십시오.

여기에서 제공되지 않으면 쉘 구성 또는 SSH를 통해 원격으로 로그인 한 경우 클라이언트 시스템 구성에서 제공 될 수 있습니다.


LC_CTYPE을 utf8로 변경합니까?
Mave

@Lucas : 아니, 그건 나쁘지. LANG이 설정되었으므로 LC_CTYPE으로 시작하는 전체 행을 간단히 제거 할 수 있습니다.
Gunnar Hjalmarsson 2016 년

LC_TYPE을 설정하려면 "en_US.UTF-8"로 설정해야합니다.

클라이언트 시스템의 구성에서 오는 경우로 로케일을 서버에 추가 할 수 있습니다 dpkg-reconfigure locales.
Paul Rougieux

5

이 명령은 내 생명을 구했습니다

sudo echo "LC_ALL=en_US.UTF-8" >> /etc/environment
sudo echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
sudo echo "LANG=en_US.UTF-8" > /etc/locale.conf
sudo locale-gen en_US.UTF-8

5
파일은 이전에 열립니다 sudo. 루트가 아닌 경우 리디렉션이 작동하지 않습니다.
Martin Thornton

3

/ etc / default / locale 파일에는 추가 (하지만 불필요한) 줄이있을 수 있습니다. 예제 파일은 다음과 같습니다.

#  File generated by update-locale
LANG=en_US.UTF-8
LANGUAGE="en_IN:en

로케일을 정렬하고 성공적으로 생성 및 재구성하려면 다음을 제외하고이 파일에서 모든 행을 제거하거나 주석 처리하십시오.

LANG=en_US.UTF-8

파일은 마침내 다음과 같아야합니다.

#  File generated by update-locale
LANG=en_US.UTF-8
# LANGUAGE="en_IN:en

그런 다음 dpkg-reconfigure locales로케일을 선택하라는 프롬프트가 표시되면를 실행 하고 en_US.UTF-8을 선택하십시오. 당신은 받게됩니다 Generation complete.프로세스가 완료되면 메시지.


0

홈 디렉토리 도트 파일을 새 컴퓨터로 마이그레이션 할 때이 문제를 직접 일으킬 수 LC_있었지만 파일 검색에 대한 원인으로 잠시 동안 원인을 식별하지 못했습니다 LOC.

~/.bashrc내가 복사 한 파일은 다음 있었다 :

export LOCPATH=/var/guix/profiles/per-user/root/guix-profile/lib/locale

(여기서 특정 값은 이전 시스템에서 GNU Guix를 사용한 이전 실험을 고려한 것이지만 관련 변수는 단순히 환경 변수가 이제 유효하지 않은 경로로 설정되었다는 것입니다.)

다양한 프로그램을 실행할 때 다음과 같은 오류가 발생했습니다.

Warning: locale not supported by C library, locale unchanged

그리고 실행할 때 이러한 오류 locale:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

줄을 제거하거나 주석 처리하여 LOCPATH문제를 해결했습니다.


0

다음을 실행하십시오.

sudo apt-get upgrade

모든 위치를 생성 한 다음 기본값을 미국으로 설정합니다.

export LC_ALL="en_US.UTF-8"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.