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