Mac OS X에서 $ LANG 변수는 어디에 설정됩니까?


24

wgetLion OS X을 설치 한 후 처음으로 사용 했는데 wget이 자국어로 현지화되어 있음을 알았습니다. set터미널에서 명령을 실행 하면 LANG변수가 현지 언어를 나타내는 것으로 나타났습니다 . 어디서 변경 wget하거나이 설정 을 무시할 수 있습니까 ?

최신 정보

여기에 locale나에게주는 것이있다 :

LANG="lt_LT.UTF-8"
LC_COLLATE="lt_LT.UTF-8"
LC_CTYPE="lt_LT.UTF-8"
LC_MESSAGES="lt_LT.UTF-8"
LC_MONETARY="lt_LT.UTF-8"
LC_NUMERIC="lt_LT.UTF-8"
LC_TIME="lt_LT.UTF-8"
LC_ALL=

따라서 매개 변수가 아닌 모든 출력 (예 : 프롬프트 및 디버그 메시지)은 리투아니아어입니다. 그게 내 문제 야 나는 영어로 돌아가고 싶습니다.

zsh로그인 쉘로 사용 하고 있습니다.


문제가 정확히 무엇입니까 wget? 그리고 무엇합니까 locale쇼 그것을 당신이 당신의 언어 선택에서 기대하는 것과 동일한 언어 및 텍스트 시스템 환경 설정 창?
bmike

답변:


26

기본적으로 터미널은 로케일 환경 변수를 설정하여 터미널이 현재 사용중인 언어 및 시간 / 날짜 / 번호 형식을 선택합니다.

시스템 환경 설정> 언어 및 텍스트

(이것은 Lion의 이름입니다. 이전 시스템에서는 기본 설정 패널의 정확한 이름이 다를 수 있습니다.)

임시 해결책은 영어를 언어 목록의 맨 위로 드래그 한 다음 터미널을 연 다음 리투아니아어를 맨 위로 이동하는 것입니다. 그러면 터미널 만 영어로 사용됩니다. 그러나 터미널을 종료했다가 다시 시작하면 리투아니아어로 재설정됩니다.

지속적인 접근 방식은 터미널에 로케일 환경 변수를 설정하지 않도록 설정하는 것입니다.

터미널> 환경 설정> 설정> [프로필]> 고급> 시작시 로케일 환경 변수 설정

그러면 언어가 지정되지 않은 로캘의 기본값이 "C"가되고 대부분의 프로그램은 기본적으로 영어가됩니다.

이 기능을 끄면 일부 프로그램이 터미널에서 어떤 문자 인코딩을 사용하는지 인식하지 못하며 ASCII 또는 ISO-Latin-1로만 가정합니다. 따라서 터미널에서 UTF-8 (기본값)을 사용하는 경우 해당 프로그램이 원하는대로 작동하거나 작동하지 않을 수 있습니다.

이 문제가 대부분인 경우 wget기본 설정 프로파일의 사본을 만들고 사용자 정의 프로파일에서 로케일 설정을 끄고를 사용할 때만 해당 프로파일 wget을 사용하여 UTF-8을 계속 지원할 것을 권장합니다. 다른 프로그램을 사용할 때는 기본 설정을 사용하십시오.

다른 사람들이 언급했듯이 셸 시작 스크립트에서 터미널이 제공 한 초기 로캘 설정을 무시할 수도 있습니다. zsh의 경우 ~ / .zshrc에 넣으십시오. bash의 경우 ~ / .bashrc를 사용하십시오 (아직없는 경우 ~ / .bashrc를 실행하는 ~ / .bash_profile을 작성하십시오).

각 로캘 환경 값에 대한 자세한 내용은 x-man-page : // 1 / locale을 참조하십시오.

그러나 unset LANG"C"로 설정했거나 설정 한 경우 일반적으로 모든 쉘 및 프로그램에 적용되지만 대부분 UTF-8을 사용하고 터미널이 로케일 변수를 일치 시키도록 설정하는 경우가 많습니다. 최고 수준의 협력, 충실도 및 기능을 얻을 수 있습니다.

따라서 해당 경로를 사용하려는 경우 초기 값을 바꾸지 않고 편집하기위한 코드를 작성하여 인코딩 정보 ( "UTF-8")를 유지하고 언어를 영어로 설정하십시오. 변수를 "C"로 설정하는 대신.

예를 들어, 이것은 zsh 및 bash에서 작동합니다.

# Replace Lithuanian with English
export LANG=${LANG/lt_LT/en_US}

때로 LANG="lt_LT.UTF-8"변경됩니다 LANG="en_US.UTF-8". 이것을 wget테스트 할 수는 없지만 충분합니다.

이 방법을 사용하면 터미널에서 문자 인코딩 환경 설정을 변경하면 쉘 시작 스크립트에서 문자 인코딩 환경 설정을 대체하지 않습니다.


잘 했어요; LANG재정의 명령 을 일반화하려면 : echo ${LANG/*./en_US.}현재 문화권 이름 en_US 이 무엇이든 관계없이 현재 문화권 이름을 바꿉니다 . 에서 작동한다 bash, ksh, zsh.
mklement0

7

여기에 설정되어 있습니다 ...

여기에 이미지 설명을 입력하십시오

풀다운에서 더 많거나 적은 옵션을 원하면 인코딩 탭으로 가서 더 많은 바운티를보십시오.


3
os x에서는 bashrc가 아닌 ~ / .bash_profile입니다. 온라인 자습서를 읽을 때 사람들은 이것 때문에 매우 혼란스러워했습니다.
Enrico Susatyo

으아 아아아-고맙습니다. 나는 오픈 소스 페이지로 가서 애플이 gnu bash를 변경하고 여전히 잘못했는지 확인했다. (내 답변 편집-감사합니다 @the_great_monkey)
bmike

4
터미널은 ~ / .bash_profile을 실행하는 로그인 쉘을 만듭니다. 그러나 대부분의 사용자 정의는 ~ / .bashrc에 배치하여 비 로그인 쉘 (예 : 하위 쉘)에도 적용해야하며 ~ / .bash_profile은 ~ / .bashrc를 실행하여 로그인 쉘에 적용해야합니다. ~ / .bash_profile은 일반적으로 비어 있으며 사용자가 하위 셸에서 실행하지 않으려는 최상위 로그인 셸 전용 코드 만 포함합니다.
Chris 페이지

1
"man 페이지를 빠르게 읽으면 쉘이 매번 로그인 할 때마다이 값을 설정한다는 것을 알 수 있습니다." "로케일 환경 설정…"환경 설정을 끄면 변수가 설정되지 않으며 로케일이 표시 LANG=되고 다른 값은 모두 기본값으로 설정됩니다 "C".
Chris 페이지

2

터미널을 시작할 때마다로드되는 .profile 파일에서 언어를 설정 하여이 문제를 해결했습니다.

export LANG="en_US.UTF-8"
export LC_ALL="POSIX"

LC_ALL우선 적용 LANG되므로 첫 번째 명령은 적용되지 않습니다.
mklement0

또한, POSIX에 해당 C하고는 전혀 유니 코드에 대응하지 않습니다.
Sebastian Graf

1

Linux 경험을 기반으로 LC_LANG을 사용하여 현지화를 완전히 변경하지 않으려는 경우 영어로 된 시스템 메시지를 원한다면 방금 설정하십시오.

LC_COLLATE=C    (to have standard sorting in ls, etc)
LC_CTYPE=en_US.UTF-8

LC_MESSAGES어떤 언어 메시지를 출력해야 하는지를 제어 하는 변수입니다 (설치된 경우).
mklement0

0

프랑스어로 된 데비안 서버와 macsox bash 클라이언트를 사용하여 macosx 사용자 디렉토리의 .bash_profile에 이것을 추가해야했습니다.

수출 LANG = fr_FR.UTF-8

해결되었습니다.


0

다른 대답은 정확합니다. 즉 시작시로켈을 사용하여 로케일 환경 변수Terminal설정 하는 설정에 관한 것 /etc/profile입니다. 그러나 특히 원격 ssh로그인 으로 인해 "문제"가 발생하는 경우 이해해야 할 또 다른 방법이 있습니다 .

OpenSSH (Linux, BSD 및 macOS에서 사용됨)는 환경 변수를 클라이언트 환경에서 서버가 시작하는 쉘로 보낼 수 있습니다. 클라이언트가 클라이언트를 보내도록 구성되어 있고 서버가 클라이언트를 수락하도록 구성된 경우에만이를 수행합니다. 클라이언트 ( ~/.ssh/config)에는 다음이 있어야합니다.

SendEnv LANG LC_*

서버 ( /etc/ssh/sshd_config)는 다음이 필요합니다.

AcceptEnv LANG LC_*

둘 다 있으면 클라이언트의 로컬이 ssh 서버의 로그인 쉘로 전파됩니다.

$ ssh me@my-mac locale
LANG="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_CTYPE="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_ALL=

Snow Leopard 에는 기본적으로 필요한 서버 설정이 없습니다 . 그것은에있다 시에라 . 수정 후 SSH 서버를 다시 시작해야합니다 /etc/sshd_config!!!

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