환경을 올바르게 설정하세요.

환경을 올바르게 설정하세요.

나는 gnome을 실행하기 위해 zsh와 gdm을 사용하고 있습니다. 얼마 전에 변수가 올바르게 설정되지 않은 것을 발견했습니다. 예를 들어 LANG/LC_ALL은 올바르지 않습니다( ""대신 en_GB.UTF-8).

.zshrc로 나누어 보겠습니다 . 후자에서는 환경 변수를 설정했는데 세션이 시작되기 전에 변수를 어떻게 설정합니까? 몇 가지 옵션( , ) 을 시도했지만 아무 것도 작동하지 않는 것 같습니다..zshrc.profile.xinitrc.xsessionrc

편집하다명확히하기 위해 - 나는 사용 .profile했고수동출처를 밝히세요 .zshrc. 어쨌든 문제는 바뀌지 않습니다.

답변1

쉬운 방법은 타임머신을 발명하고 쉘 시작 파일을 설계한 다양한 사람들을 방문하여 세 가지를 명확하게 구별하라고 말하는 것입니다.

  • 환경 변수와 같은 세션 설정
  • 세션 시작, 즉 명령줄 셸이나 창 관리자를 시작하거나 startx;
  • 별칭, 프롬프트, 키 바인딩과 같은 쉘 초기화.

이식 가능한 방식으로 세션 및 쉘 정확성을 얻는 것은 그리 어렵지 않습니다. 로그인 시 초기화는 .profile(or .zprofile, or )에 들어가고 쉘 초기화는 or .login에 들어갑니다 . 나는 이전에 대략 글을 쓴 적이 있다..bashrc.zshrc.bash_profile,zsh 및 기타 쉘,이식성에 대한 추가 정보(주로 bash에 관한 것),읽는 사람에 대한 추가 정보.profile.

남은 문제는 세션 설정과 세션 시작을 구별하는 것입니다. 대부분의 경우 ~/.profile이는 로그인할 때 실행되며 두 가지를 모두 수행할 수 있지만 예외가 있습니다.

  • 로그인 셸이 (t)csh 또는 zsh 이고 ~/.login소스 ~/.zprofile~/.profile.bash ~/.bash_profile가 아닌 경우에도 마찬가지이지만 .~/.profile~/.bash_profile
  • 로그인한 경우디스플레이 관리자(xdm, gdm, kdm, ...), ~/.profile읽을지 여부는 프로그램 버전, 배포판(Linux 또는 기타) 및 선택한 세션 유형에 따라 다릅니다.
    • 세션을 시작하기 위해 디스플레이 관리자를 사용하는 경우 .profile환경 변수를 설정해야 하지만 세션(예: 창 관리자)을 시작해서는 안 됩니다.
    • X 세션의 기존 구성 파일은 ~/.xsession세션 설정 및 세션 시작을 수행합니다. 따라서 파일은 본질적으로 . ~/.xsession; . ~/.xinitrc.일부 배포 소스는 ~/.profile이전에 였습니다 ~/.xsession.최신 배포판은 ~/.xsession디스플레이 관리자에서 "사용자 정의" 세션을 선택할 때만 소스를 제공하며 이러한 세션을 항상 사용할 수 있는 것은 아닙니다.
    • 세션 관리자는 환경 변수를 설정하는 고유한 방법을 가질 수 있습니다. (이것은 구성 파일을 통해 또는 로그인 시 세션 유형을 선택하여 선택한 데스크탑 환경의 선택적 부분입니다. 사용자 아래에서 실행되는 디스플레이 관리자가 제공하는 세션 시작 스크립트와 혼동하지 마십시오. 시스템 범위 선택 예, 엉망입니다.)

요약하면 ~/.profile환경 변수의 위치가 정확합니다. 읽히지 않으면 거기에서 가져오거나 ~/.xsession(그리고 거기에서 X 프로그램을 실행하십시오) 시스템별 방법을 찾으십시오(이는 배포판, 디스플레이 관리자(있는 경우), 세션 유형에 따라 다를 수 있습니다) (디스플레이 관리자가 있는 경우) 및 데스크톱 환경 또는 세션 관리자도 포함됩니다.

답변2

Gentoo 문서에 기사가 있습니다.젠투 리눅스 현지화 가이드.3 장로케일 설정에 관한 것입니다.

대부분의 경우 사용자는 전역적으로 LANG 변수만 설정합니다. 이 예는 유니코드 독일어 로케일에 대한 것입니다.

코드 목록 3.1: 기본 시스템 로케일 설정/etc/env.d/02locale

LANG="en_GB.UTF-8"

내 젠투에서는 LANG이 파일이 설정되어 있고 모든 것이 잘 작동합니다...

pbm@tauri ~ $ cat /etc/env.d/02locale 
LANG="pl_PL.UTF-8"

pbm@tauri ~ $ locale
LANG=pl_PL.UTF-8
LC_CTYPE="pl_PL.UTF-8"
LC_NUMERIC="pl_PL.UTF-8"
LC_TIME="pl_PL.UTF-8"
LC_COLLATE="pl_PL.UTF-8"
LC_MONETARY="pl_PL.UTF-8"
LC_MESSAGES="pl_PL.UTF-8"
LC_PAPER="pl_PL.UTF-8"
LC_NAME="pl_PL.UTF-8"
LC_ADDRESS="pl_PL.UTF-8"
LC_TELEPHONE="pl_PL.UTF-8"
LC_MEASUREMENT="pl_PL.UTF-8"
LC_IDENTIFICATION="pl_PL.UTF-8"
LC_ALL=

관련 정보