XDG_CONFIG_HOME 변수는 어디에 정의해야합니까?


40

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

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

XDG_CONFIG_HOME="$HOME/.config"

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

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

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

답변:


24

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변수 확장을 지원하며이 목적으로 사용할 수있는을 가지고 있습니다.


요한을 사용할 수 없습니다

3
/etc/profile더 이상 아치에 없으며에서 한 번만 언급됩니다 /etc/profile.d/locale.sh.
phil pirozhkov

1
링크는 죽었다 ...
ManuelSchneid3r

53

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

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

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

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

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

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

1
downvoter는 답변의 문제점을 설명하고 개선하는 데 도움을주는 것을 환영합니다.
MestreLion

1
이 답변은 이론적으로는 완벽하지만, XDG 기본 디렉토리 사양을 준수하지 않는 소프트웨어와이 무지에서 발생하는 쿼터 버그 (quattuordecillation)가 있습니다.
ManuelSchneid3r

5
@ ManuelSchneid3r 매우 사실이지만 이러한 소프트웨어 설정의 XDG_CONFIG_HOME경우 어쨌든 거의 차이가 없습니다.
MestreLion

2
XDG_CONFIG_HOME타사 사양의 일부가 아닌 표준 Linux 또는 Unix 기능이라고 가정하고 사양 을 따르지 않고 맹목적으로 사용하는 소프트웨어가있을 수 있습니다 .
Eagle-Eye

3
@mcnesium 나는 아마 아프지 않을 것이라고 말하고 있습니다. 가능하면 응용 프로그램 자체를 수정하고 수정 프로그램을 업스트림으로 보내는 것이 좋습니다.
Eagle-Eye

5

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 방법으로 전환하면 이러한 방식으로 동작하는 여러 응용 프로그램의 문제가 해결되었습니다.


4
참고 :이에 지정된에서 기본값을 따르지 않는 XDG 기본 디렉토리 사양
톰 헤일

1
@TomHale 물론, 변수 설정의 요점은 기본값을 무시하는 것입니다. 기본값에 만족하면 이러한 변수를 전혀 설정할 필요가 없습니다.
carlwgeorge

1
우분투 14.04는 기본적으로 XDG 디렉토리 변수를 설정하지 않습니다. 스펙이 있다고해서 그 배포판이 그 뒤를 따른다는 의미는 아닙니다.
Tom Hale

2
사양을 인식하지 못하는 export LESSHISTFILE="$XDG_CACHE_HOME"/less/history위치를 원 less하고 기본값이 아직 내 배포판에 의해 설정되지 않은 경우 중요합니다 .
Tom Hale

1
@TomHale 사양은 운영 체제 가 변수를 설정 해야하는 것을 정의하지 않습니다 . 정의되고 비어 있지 않은 경우 응용 프로그램에서 사용해야하는 변수를 정의 합니다. 변수가 정의되지 않았거나 비어있는 경우 응용 프로그램 은 사양에서 참조되는 기본 경로를 사용해야합니다. 따라서 짧은 예제는 먼저 XDG_CACHE_HOME정의되고 비어 있지 않은지 확인하지 않기 때문에 사양을 준수하지 않습니다 . 대신 :export LESSHISTFILE="${XDG_CACHE_HOME:-$HOME/.cache}"/less/history
villapx

0

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

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

1
Downvoter는 자신을 설명하기 위해 관심?
smac89
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.