web-dev-qa-db-ja.com

XDG_DATA_DIRSにディレクトリを追加する正しい方法は何ですか?

/opt/myappディレクトリに/opt/myapp/shareの下にアプリをインストールしました。インストールが完了すると、次のことがわかります。

Note that '/opt/myapp/share' is not in the search path
set by the XDG_DATA_HOME and XDG_DATA_DIRS
environment variables, so applications may not
be able to find it until you set them. The
directories currently searched are:

- /usr/share/gnome
- /home/joeuser/.local/share/flatpak/exports/share
- /var/lib/flatpak/exports/share
- /usr/local/share
- /usr/share

そのリストにディレクトリを追加する正しい方法は何ですか-システム全体およびシングルユーザーとして?

2
einpoklum

ドイツ語ubuntuusers wikiにはニースリストがあります その目的で使用できるファイルとディレクトリの数。

グローバルに設定する

私の研究から、その環境変数にグローバルに追加することは簡単ではありませんが、ここにいくつかのポインタがあります:

  • 既存の値を上書きする場合は、/etc/environmentが最も簡単な方法です
  • システム構成によっては、/etc/profileもシェルによって実行されるため、良い方法かもしれません。
  • 試してみる他のファイルは/etc/X11/Xsession.d/*/etc/security/pam_env.confかもしれません

ユーザーごとに設定する

  • $HOME/.profile(またはzshユーザーの場合は$HOME/.zprofile)が複数の場所で推奨されますが、そこにXDG_DATA_DIRS="$HOME/.local/xdg:$XDG_DATA_DIRS"の行を追加すると、ログイン時にデスクトップが完全に機能しなくなります
  • 私にとってうまくいった方法は、$HOME/.xsessionrcを作成し、そこにexport XDG_DATA_DIRS="$HOME/.local/xdg:$XDG_DATA_DIRS"という行を入れることでした。もちろん、$HOME/.local/xdgを追加したいディレクトリに置き換える必要があります。また、これはシェルではなく、グラフィカルアプリケーションの変数のみを設定することに注意してください(そのため、値はecho $XDG_DATA_DIRSで言及されません)が、これは問題にはなりません。

勧告

この行を実行して再度ログインするだけで動作します。

echo export 'XDG_DATA_DIRS="/opt/myapp/share:$XDG_DATA_DIRS"' >> ~/.xsessionrc

その後何らかの理由でシステムが機能しなくなった場合は、 Recovery Mode と入力し、ルートシェルに移動してrm /home/<username>/.xsessionrcを入力し、次にrebootを入力してシス​​テムに戻ります。

1
Xerus

システム全体についてはわかりませんが、単一のユーザー(システム全体でアクセス可能)として、この行を~/.profileファイル。

XDG_DATA_DIRS="/var/lib/flatpak/exports/share:$XDG_DATA_DIRS"

そして、あなたはあなた自身のニーズを満たすためにそれを適応させることができます。

0
Nicekiwi