web-dev-qa-db-ja.com

BashでXDGディレクトリとパスを利用するにはどうすればよいですか?

_~/.config/user-dirs.dirs_で定義された変数だけでなく_xdg-user-dir_でアクセスする方法を知りたいです。 "$(xdg-user-dir VIDEOS)"だけでなく、次の標準変数:

  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_

そのために、_~/.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」ディレクトリ構造仕様で定義されているユーザーディレクトリ変数以外に、上記のディレクトリ変数とパス変数にアクセスするメカニズムはありますか?

8
Tim Friske

これらの環境変数はすべてオプションです。それらが設定されていない場合、スクリプトは 仕様 自体で指定されたデフォルト値に置き換える必要があります。

someprog --cachedir "${XDG_CACHE_HOME:-$HOME/.cache}"