Bash 스크립트에서 $XDG_CONFIG_HOME, $XDG_CONFIG_HOME, $XDG_STATE_HOME 등의 값을 찾는 방법은 무엇입니까?

Bash 스크립트에서 $XDG_CONFIG_HOME, $XDG_CONFIG_HOME, $XDG_STATE_HOME 등의 값을 찾는 방법은 무엇입니까?

이는 모든 애플리케이션 개발자가 직면하는 간단한 질문인 것 같지만 답을 찾을 수 없습니다.

최신에 따르면사양에 따른 XDG, 환경 변수에 정의해야 할 디렉터리가 많이 있습니다. 예로서:

사용자별 구성 파일이 기록되는 기본 디렉터리가 있습니다. 이 디렉토리는 환경 변수 $XDG_CONFIG_HOME에 의해 정의됩니다.

내 Bash 스크립트가 사용자 구성을 저장한다고 가정해 보겠습니다. XDG 사양을 따르고 싶습니다. 이를 어떻게 찾을 수 있습니까 $XDG_CONFIG_HOME? 당신이 다음과 같은 일을 할 것이라는 것이 합리적입니다.

#!/bin/bash

# Print out $XDG_CONFIG_HOME
echo Your XDG_CONFIG_HOME is: [$XDG_CONFIG_HOME]

그러나 새로 설치된 Ubuntu와 Fedora Silverblue에서 실행하면 다음과 같은 결과가 나타납니다.

$ ./test.sh
Your XDG_CONFIG_HOME is: []

이는 Ubuntu 및 Fedora Silverblue 데스크탑을 새로 설치할 때 내 응용 프로그램이 구성 파일을 실행 디렉터리에 기록한다는 의미이므로 완전히 쓸모없어 보입니다. 그러나 데이터를 올바르게 입력하는 응용 프로그램이 많이 있습니다 ~/.config/. 이러한 응용 프로그램은 XDG 환경 변수를 어디서 찾을 수 있으며 어떻게 찾을 수 있습니까?

답변1

사양누락된 값을 처리하는 방법을 설명하세요.:

설정되지 않거나 비어 있는 경우 $XDG_DATA_HOME/.local/share와 동일한 기본값을 사용해야 합니다.$HOME

모든 XDG 변수에 대해서도 마찬가지입니다.

따라서 데스크탑 환경은 일반적으로 실행시에만 값을 설정합니다.아니요기본값과 일치합니다. 스크립트에서는 ${XDG_CONFIG_HOME:-$HOME/.config}각 변수에 적절한 기본값 등의 확장을 사용합니다 .

관련 정보