XDG仕様では、XDG_CONFIG_HOME
変数について説明していますが、それをどこに定義する必要があるかは指定していません。 /etc/X11/Xsession
で定義する必要がありますか、それとも、これを定義する必要があるのはウィンドウマネージャーの構成ファイルですか?
/ etc/environmentで次のように宣言してみました
XDG_CONFIG_HOME="$HOME/.config"
しかし、/etc/environment
が解析されるときに$ HOMEが定義されていないように見えるため、これは機能しませんでした。
オンラインで見つけた唯一のドキュメントはGentooで、/etc/env.d/90xsession
で宣言されていました
Ubuntuを使用しています。 Debianベースのディストリビューションの一般的な解決策は何ですか?
Arch Linuxでは、これは/etc/profile
スクリプトを使用して/etc/profile.d
によって定義されます。
Debian/Ubuntuの場合、/etc/profile.d
がある場合–内部に同様のスクリプトを作成します。そのようなディレクトリが存在しない場合– /etc/profile
itsefを編集します。
export XDG_CONFIG_HOME="$HOME/.config"
/etc/environment
ファイルはpam_env
によって解析され、単純なname = value割り当てとして扱われます。ただし、/etc/security/pam_env.conf
もあり、変数の展開をサポートしており、この目的で使用できます。
デフォルトを変更したい場合を除き、どこでも定義する必要はありません。
XDGベースディレクトリ仕様 は次のように明確に述べています。
$XDG_CONFIG_HOME
が設定されていないか空の場合、$HOME/.config
と等しいデフォルトを使用する必要があります。
したがって、デフォルト値に定義するのは冗長です。準拠しているすべてのアプリケーションはすでに$HOME/.config
を使用します
しかし、doがDebian/Ubuntuシステムのデフォルトを変更したい場合、最適な場所は次のとおりです。
/etc/profile
~/.profile
PAMを介して環境変数を設定するのが最適であることがわかりました。最新のLinuxディストリビューションの場合、これは/etc/environment
または$HOME/.pam_environment
を意味します(man pam_env
を参照)。特別な構文を使用して/etc/security/pam_env.conf
に設定することもできます。 XDG変数を/etc/security/pam_env.conf
に設定する方法を次に示します。
XDG_CACHE_HOME DEFAULT=@{HOME}/.xdg/cache
XDG_CONFIG_HOME DEFAULT=@{HOME}/.xdg/config
XDG_DATA_HOME DEFAULT=@{HOME}/.xdg/data
XDG_STATE_HOME DEFAULT=@{HOME}/.xdg/state
以前は、これらの変数を/etc/profile.d/custom.sh
に設定していました。ただし、一部のアプリケーションは、そのファイルが読み取られる前に起動します。 PAMメソッドに切り替えると、このように動作する複数のアプリケーションの問題が解決しました。
Zshユーザーの場合は、.zshenv
ファイル
export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"