표준 구성 파일 명명 패턴 및 위치는 무엇입니까?

표준 구성 파일 명명 패턴 및 위치는 무엇입니까?

저는 프론트엔드 foo-gtk를 사용하여 foo 애플리케이션을 작성하고 있습니다.

기본/시스템 전체 구성 파일을 설치하고 싶습니다. 이 구성 파일은 구성 아래에 있으며 /etc/foo.conf아마도 /etc/foo-gtk.conf기본 GUI 설정에 사용될 것입니다.

사용자별 프로필이 더 혼란스럽습니다.

다른 애플리케이션에 대한 구성 파일은 다음과 같습니다.

  • ~/.foo.conf
  • ~/.foo/config
  • ~/.config/foo/config

첫 번째는 사용자가 심하게 편집해야 할 경우 빠르게 찾을 수 있다는 장점이 있지만, 다음 두 개는 거의 비슷한 것 같습니다.

공식적인 사양을 찾지 못했기 때문에 응용 프로그램 기본, 시스템 전체 및 사용자별 프로필을 저장/찾는 모범 사례가 무엇인지 궁금합니다.

답변1

최신 모범 사례는 애플리케이션에 사용자별 파일이 여러 개 있는 경우가 아니면 숨겨진 사용자 디렉터리에 사용자 프로필을 포함하지 않는 것입니다. 따라서 사용자 리소스 파일은 foo로만 사용 ~/.fooconfig(또는 )해야 합니다.~/.foorc

foo에 여러 사용자 파일이 있는 경우 ~/.foo/config구성 파일과 기타 파일이 모두 ~/.foo/ 아래에 있습니다.

답변2

약 10년 전에 정의되어 최근 채택된 이 표준은 , 기타 위치를 사용하여 사용자 구성, 캐시 및 데이터를 ~/.config/저장 하는 표준 방법 입니다.~/.cache/~/.local/share/

이는 다음과 같이 정의됩니다.환경$XDG_CONFIG_HOME, $XDG_CACHE_HOME등 의 $XDG_DATA_HOME변수 대부분의 환경에서는 여전히 사전 정의되는 경우가 거의 없지만 존재 여부를 테스트하고 아직 사전 설정되지 않은 경우 공식 기본값을 직접 설정한 다음 이러한 특정 변수를 자신의 변수에 다음과 같이 사용하는 것이 좋습니다. 구성 위치. 이 방법을 통해 잠재적인 사용자, 개발자 또는 소스 코드 연구원에게 구성, 캐싱 및 데이터에 이러한 표준 위치를 사용하고 있음을 알립니다. 그렇지 않으면 프로그래밍 언어에 따라 검색이 작동할 수도 있고 작동하지 않을 수도 있습니다 ~/.config/. $HOME/.config/및 검색 메커니즘).

if [ "x$XDG_CONFIG_HOME" = "x" ] ; then
    XDG_CONFIG_HOME="$HOME/.config"
fi
CONFIG_FILE="$XDG_CONFIG_HOME/myprog/myprog.conf"
if [ "x$XDG_CACHE_HOME" = "x" ] ; then
    XDG_CACHE_HOME="$HOME/.cache"
fi
CACHE_DIR="$XDG_CACHE_HOME/myprog/my-prog-cache-v1"

인용하다:

관련 정보