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}"