우분투 환경변수(Environment Variable) 설정: 한국어 정렬 관련 문제.

tl;dr

환경변수는 다음 세 파일에 적절히 넣으면 된다.

~/.xprofile (X 환경)
~/.profile (Bash 환경)
~/.zprofile (Zsh 환경)

# 다음 내용을 넣는다.
export LC_COLLATE="ko_KR.UTF-8"

zsh 가 기본이고, GUI 도 사용해야할 경우, .zprofile, .xprofile 두 파일에 모두 넣어야 제대로 작동한다.
Bash 가 기본일 경우, .profile 에만 넣어줘도 된다.


서버랍시고 만들어놓은 컴퓨터에는 잘난 척(?)을 하느라 우분투 서버를 설치했다. 그리고 영어(en_US)를 기본환경으로 설정했다. 이유는.. 영어를 잘해서가 아니고, 직접 접근했을 때(ssh 터미널이 아닌 직접 키보드/모니터로), 한글이 튀어나오면 깨져버리기에 그게 귀찮았기 때문이다.

그냥 한국어로 설정하고, 때에 따라 export LANG=C (또는 en_US.utf-8)을 하고 작업하면 별 무리가 없으리라는 생각도 든다. 게다가 직접 접속할 일이 거의 없으니 굳이 영어를 고집할 필요는 없을 듯도 하다.

다음 설치 땐 로캘(Locale)을 한국어로 해봐야겠다.


여기까진 푸념이고, 아래가 진짜다.

아무튼, 위와 같이 설치를 하고 지금까지 몇 달 동안, 잘 써왔는데 며칠 전에야 문득, 한국어 정렬이 이상하다는 사실을 깨달았다. 가나다 순이 아닌, 엉뚱한 방식으로 정렬이 되고 있다는 걸 왜 이제야 봤을까?

GUI로 Xfce 를 설치했기에, 혹시나 거기서만 그런가 하고 괜히 Thunar 에 대해서만 검색해보며 이래 저래 고민을 하던 차..

드디어 얻어 걸린(?) 결과. Locale 이 한국어가 아니면 이런 현상이 나타난다는 글을 찾아내기에 이르렀다. 이 글에선 해결책으로 LC_COLLATE="ko_KR.UTF-8"/etc/environment 에 넣는 방법을 제시하고 있는데, 가능한한 시스템 환경은 건드리고 싶질 않았다.

이 전에도 이 문제로 고민했었는데(환경변수를 어디에 넣어야 하는지?), 이번에도 마찬가지로 또 골머리를 앓았다.

간단히 정리하자면, .profile 에 다음과 같이 명령을 넣어주면 된다.

export LC_COLLATE="ko_KR.UTF-8"

이렇게 하면 Bash 에서도, GUI 에서도 정렬은 이상없이 작동하게 된다.
다만, Zsh 를 사용한다면 .profile 만으론 해결이 되지 않기 때문에, .zprofile 에도 똑같은 명령을 넣어줘야 한다.

Shell 을 아우르는 상위 개념은 없으려나. 시스템 영역을 건드리지 않고는 불가능한 건가? 지금으로선 알 수가 없다.


이 전 글에도 있는 내용인데, .config/environment.d/xx.conf 를 사용하는 방법도 있다고 한다. 하지만, 여기에 저 내용을 넣어도 반영이 되진 않는다.
그렇다고 설정이 안된건 또 아니다.

저 내용은 이렇게 확인해볼 수 있다.

systemctl --user show-environment

이러면 LC_COLLATE 가 지정한 대로 확실히 출력이 되는데, printenv 로는 그냥 비어있는 상태가 된다. 뭔가 살짝 복잡 미묘한게 있는 듯 한데, Arch 문서에 따르면, Wayland 의 경우는 반드시 여기에 추가를 해줘야 한다고 한다.

그리고, 전역 환경이 아니고 특정 응용프로그램에서만 환경변수를 주고 싶다면, .desktop 파일에 할당하면 된다고 한다.
요런 식으로. (he 는 어느 나라 말일까.. 히브리어인가? 그러나, Hebrew Israel 이로군.)

Exec=env LANG=he_IL.UTF-8 abiword %U

역시 아치리눅스.

이 정도면 충분. 더 이상 캐보기는 무리.

안녕하세요. 글 남겨주셔서 고맙습니다.