Интересно, как получить доступ не только к переменным, определенным в ~/.config/user-dirs.dirs
with xdg-user-dir
, например "$(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"?
bash
directory-structure
freedesktop
Тим Фриске
источник
источник
XDG_RUNTIME_DIR:-"/run/user/$UID"
Ответы:
Эти переменные среды являются необязательными. Если они не установлены, то ваш скрипт должен заменить значения по умолчанию, указанные в самой спецификации .
источник
"${XDG_CACHE_HOME:-~/.cache}"
доступе. Оптимально должен существовать такой же механизм, как и при"$(xdg-user-dir VIDEOS)"
неявном предоставлении этого значения по умолчанию. Таким образом, мне не нужно запоминать значение по умолчанию для каждой переменной XDG."${XDG_CACHE_HOME:-~/.cache}"
это неправильно, следует использовать"${XDG_CACHE_HOME:-$HOME/.cache}"
вместо этого.Плюс настройки по умолчанию:
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
)Так:
источник