~/.config/user-dirs.dirs
xdg-user-dir
예를 들어 with 에 정의된 변수뿐만 "$(xdg-user-dir VIDEOS)"
아니라 다음 표준 변수에도 액세스하는 방법을 알고 싶습니다 .
XDG_CACHE_HOME:-$HOME/.cache
XDG_CONFIG_HOME:-$HOME/.config
XDG_DATA_HOME:-$HOME/.local/share
XDG_RUNTIME_DIR:-"/run/user/$USER"
XDG_CONFIG_DIRS:-/etc/xdg
XDG_DATA_DIRS:-/usr/local/share:/usr/share
이를 위해 ~/.bash_login
파일에서 다음을 수행합니다.
# Define standard directories.
declare -gx XDG_CACHE_HOME=~/.cache
declare -gx XDG_CONFIG_HOME=~/.config
declare -gx XDG_DATA_HOME=~/.local/share
declare -gx XDG_RUNTIME_DIR="/run/user/$USER"
declare -gx XDG_CONFIG_DIRS="$(IFS=: path /etc/xdg)"
declare -gx XDG_DATA_DIRS="$(IFS=: path /usr/local/share:/usr/share)"
# Source supplementary directories to export or overwrite existing standard ones.
declare a="$XDG_CONFIG_HOME/user-dirs.dirs"
if [[ -e $a ]]; then
source "$a"
declare b=""
for b in ${!XDG_*}; do
if [[ $b =~ ^XDG_[_[:alnum:]]+_DIR$ ]]; then
declare -gx "$b"
fi
done
fi
"XDG" 디렉터리 구조 사양에 정의된 사용자 디렉터리 변수 외에 위 디렉터리 및 경로 변수에 액세스하는 메커니즘이 있습니까?
답변1
이러한 환경 변수는 선택 사항입니다. 설정되지 않은 경우 스크립트는 제공된 기본값을 바꿔야 합니다.사양그 자체.
someprog --cachedir "${XDG_CACHE_HOME:-$HOME/.cache}"
답변2
나는 systemd-path
이것이 널리 사용 가능하다고 생각하며 상황 인식 해결 및 적절한 폴백을 통해 경로를 얻는 데 사용될 수 있습니다.
$ systemd-path user-shared
/home/Xerkus/.local/share
$ HOME=/foo systemd-path user-shared
/foo/.local/share
$ XDG_DATA_HOME=/bar systemd-path user-shared
/bar
남성의 경우:
systemd-path는
시스템 및 사용자 경로를 쿼리하는 데 사용할 수 있습니다. 이 도구는 file-hierarchy(7)에 설명된 많은 경로를 쿼리 가능하게 만듭니다. 인수 없이 호출하면 알려진 경로 목록과 현재 값이 표시됩니다. ...
답변3
+ 기본값:
man xdg-user-dir
=> 참조: xdg-user-dirs-update
(1)
man xdg-user-dirs-update
=> 참조: user-dirs.defaults
(5)
man user-dirs.defaults
=> user-dirs.defaults
첫 번째 아래 XDG_CONFIG_DIRS
(기본값 /etc/xdg
: )
그래서:
read -r -d : <<<"${XDG_CONFIG_DIRS:=/etc/xdg}" XDG_USER_DIRS_DEFAULTS
XDG_USER_DIRS_DEFAULTS+=/user-dirs.defaults