XDG_CONFIG_HOME 변수는 어디에 정의해야합니까? 관리자의 구성 파일입니까? 나는 / etc / environment에서

XDG 스펙은 XDG_CONFIG_HOME변수 에 대해 설명 하지만 정의 할 위치를 지정하지 않습니다. 에 정의해야합니까 /etc/X11/Xsession, 아니면 이것을 정의 해야하는 창 관리자의 구성 파일입니까?

나는 / etc / environment에서 다음과 같이 선언하려고 시도했다.

XDG_CONFIG_HOME="$HOME/.config"

그러나 /etc/environment파싱 할 때 $ HOME이 정의되지 않은 것처럼 보이므로 작동하지 않았습니다 .

온라인에서 찾을 수있는 유일한 문서는 Gentoo를위한 것입니다. /etc/env.d/90xsession

우분투를 사용하고 있습니다. 데비안 기반 배포판의 일반적인 솔루션은 무엇입니까?



답변

Arch Linux에서는 스크립트를 /etc/profile사용하여에 의해 정의됩니다 /etc/profile.d.

데비안 / 우분투의 경우 /etc/profile.d– 안에 비슷한 스크립트를 만드십시오; 그러한 디렉토리가 없으면 /etc/profile–ef를 편집 하십시오.

export XDG_CONFIG_HOME="$HOME/.config"

/etc/environment파일에 의해 구문 분석 pam_env,하는 단순한 이름 = 값 할당과 같은 취급을. 그러나 또한 /etc/security/pam_env.conf변수 확장을 지원하며이 목적으로 사용할 수있는을 가지고 있습니다.


답변

기본값을 변경하지 않는 한 어디에서나 정의 할 필요 가 없습니다 .

XDG 기본 디렉토리 사양 은 다음과 같이 명확하게 말합니다.

$XDG_CONFIG_HOME설정되어 있지 않거나 비어 있지 않으면 기본값 인을
$HOME/.config사용해야합니다.

따라서 기본값으로 정의하는 것은 중복됩니다. 모든 호환 응용 프로그램은 이미 사용합니다$HOME/.config

당신이 경우에, 않습니다 데비안 / 우분투 시스템의 기본을 변경하려면, 가장 좋은 장소입니다 :

  • 시스템 전체 변경의 경우 모든 사용자에게 영향을줍니다. /etc/profile
  • 사용자 만 해당 : ~/.profile

답변

PAM을 통해 환경 변수를 설정하는 것이 가장 효과적이라는 것을 알았습니다. 현대 리눅스 distos,이 수단 /etc/environment또는 $HOME/.pam_environment(참조 man pam_env). /etc/security/pam_env.conf특수 구문 을 사용하여 설정할 수도 있습니다 . 여기에 XDG 변수를 설정하는 방법이 /etc/security/pam_env.conf있습니다.

XDG_CACHE_HOME  DEFAULT=@{HOME}/.xdg/cache
XDG_CONFIG_HOME DEFAULT=@{HOME}/.xdg/config
XDG_DATA_HOME   DEFAULT=@{HOME}/.xdg/data
XDG_STATE_HOME  DEFAULT=@{HOME}/.xdg/state

이전에는이 ​​변수를에 설정했습니다 /etc/profile.d/custom.sh. 그러나 일부 응용 프로그램은 해당 파일을 읽기 전에 시작합니다. PAM 방법으로 전환하면 이러한 방식으로 동작하는 여러 응용 프로그램의 문제가 해결되었습니다.


답변

Zsh 사용자의 경우 .zshenv파일 에서 정의 하십시오.

export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"


답변