LC_CTYPE 자동 완성 차단 :이 문제의 원인은 무엇입니까?


12

오늘날 어떤 이유로 터미널에서 탭을 누를 때마다 다음과 같이 나타납니다.

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

Display all 150 possibilities? (y or n)

이 특정 것은 내가 타이핑하고 catTab 키를 누르면 발생합니다 . 나는 어떤 설정이나 아무것도 바꾸지 않았다. 아무도 무슨 일인지 알아?


en_CA(즉, 캐나다 영어) 당신이 될 것으로 예상 로케일?
Gilles 'SO- 악의를 그만두십시오'

2
locale명령 의 출력을 게시 할 수 있습니까?
penguin359

2
en_CA유효한 로케일 입니까 (즉, 둘 다 시스템에 존재하며 localedef유사한 로케일 생성 도구에 의해 생성 되었습니까)?

당신은 정답을 원하는 경우, @ penguin359에서 질문에 답하고 직접 콘솔 (시스템에 연결 또는 원격으로하는 방법을 알려 주시기 바랍니다 sshputty.

답변:


5

나는 당신의 bash_completion이 이것을 일으키는 원인을 직감했습니다. 다음을 수행하여 bash 완료를 일시적으로 지우십시오 (종료 될 때까지).

complete -r

그것이 지워지면 bash가 완료 된 것입니다. 그렇지 않으면 여전히 bash 내장 중 하나 일 수 있습니다


다른 솔루션은 오랫동안 지속되어 온 문제에 대한보다 적절한 솔루션처럼 보였지만 이것이 효과가 있었기 때문에이 솔루션을 마지막으로 시도했습니다.
The Unfun Cat

5

SSH를 통해 원격 서버에 연결할 때 비슷한 문제가 있습니다 (내 로컬에 oh-my-zsh를 설치 한 후 관련성이 확실하지 않습니다). 그것을 해결하기 위해,

로컬 컴퓨터에서 / etc / ssh / ssh_config 파일을 편집하여 SendEnv 줄을 주석 처리했습니다.

#SendEnv LANG LC_*

원격 시스템에서 경고없이 탭 완성이 작동합니다.

bash : 경고 : setlocale : LC_CTYPE : 로케일을 변경할 수 없습니다


4

나는 우분투 서버 (FlexiScale)에서 비슷한 문제를 겪었고 잠시 동안 해결책을 찾았지만 적절한 것을 찾을 수 없었습니다.

내가 본 경고는 다음과 같습니다.

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

로케일을 최신 상태로 유지하기 위해 이것을 수행했습니다 (필요한지 확실하지 않음).

# locale-gen --purge

locale내 시스템에서 LC_CTYPE="UTF-8"나에게 옳지 않은 것을 보여 주었 으므로 /etc/default/locale다음과 같이 변경 했습니다.

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

(두 번째 줄을 추가했습니다.) 다시 로그인 한 후 경고가 사라졌습니다.


3
LC_CTYPE유효한 값으로 고정 시켜 주었습니다 . 당신은 필요하지 않습니다 LANG(실제로 나는 그것을 반대합니다 ). 를 실행하여 시스템에서 유효한 로케일 이름을 볼 수 있습니다 locale -a. 우분투 sudo localegen xx_YY에서 xx_YY로케일 을 생성하기 위해 실행 하십시오 ( 생성 가능 하다고 가정).
Gilles 'SO- 악마 그만해'

1

bash 명령 자동 완성을 위해 Tab 키를 누를 때 이와 유사한 오류 / 경고 메시지가 표시되는 경우 :

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

해결책은 다음과 같습니다.

  1. 필요한 로케일을 설치하십시오. 제 경우에는 "id"입니다.

    sudo apt-get install language-pack-id
  2. 로케일을 재구성하십시오.

    sudo dpkg-reconfigure locales

이제 bash Tab 완성은 정상적으로 작동합니다. :-)

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


0

나는 같은 문제를 겪고 있었다. 여기에서 몇 가지 솔루션을 시도했지만 실행하려고했을 때 locale-gen시스템에서 명령을 찾을 수 없다고 말했습니다. 그것은 locales내가 설치하지 않은 패키지 의 일부라는 것이 밝혀졌습니다 . 그래서 설치하고 실행했는데 locales-gen이제 작동합니다!


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