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}各変数に適切なデフォルト値などの拡張を使用します。

関連情報