Como utilizar diretórios e caminhos XDG no Bash?

6

Gostaria de saber como acessar não apenas as variáveis definidas em ~/.config/user-dirs.dirs com xdg-user-dir , por exemplo "$(xdg-user-dir VIDEOS)" , mas também as seguintes variáveis padrão:

  1. XDG_CACHE_HOME:-$HOME/.cache
  2. XDG_CONFIG_HOME:-$HOME/.config
  3. XDG_DATA_HOME:-$HOME/.local/share
  4. XDG_RUNTIME_DIR:-"/run/user/$USER"
  5. XDG_CONFIG_DIRS:-/etc/xdg
  6. XDG_DATA_DIRS:-/usr/local/share:/usr/share

Para isso, faço o seguinte no meu arquivo ~/.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

Existe um mecanismo para acessar as variáveis de diretório e caminho acima, além das variáveis de diretório de usuários definidas pela especificação da estrutura de diretórios "XDG"?

    
por Tim Friske 05.12.2012 / 19:14

1 resposta

2

Essas variáveis de ambiente são todas opcionais. Se eles não estiverem definidos, o script deve substituir os valores padrão fornecidos na especificação .

someprog --cachedir "${XDG_CACHE_HOME:-$HOME/.cache}"
    
por 06.12.2012 / 18:53