`/etc/profile.d`にエクスポートされた変数は、Gnomeのシステムユーザー環境でどのように終了しますか?

`/etc/profile.d`にエクスポートされた変数は、Gnomeのシステムユーザー環境でどのように終了しますか?

Systemdを持つGnomeでは、systemdユーザー環境変数は次のコマンドを使用して構成されます。システム環境.dメカニズムはシェルスクリプトではなく設定ファイルに依存します。さらに、Gnomeセッション内では多くの環境変数が使用されます/etc/profile.d/*

2つのシステム(environment.d設定ファイルとその中にあるスクリプト/etc/profile.d/*)は開けません(たとえば、これらの変数を手動でインポートする方法がありますがsystemctl --user import-environment)。

また、Waylandを使用すると、/etc/profile.d/*XorgのGnomeのようにスクリプトをインポートしません(scriptsを使用すると/etc/gdm/Xsessionスクリプト/etc/profile自体をインポート/etc/profile.d/*して~/.profileスクリプトを作成します)。

したがって、Gnomeを使用するときにこれらのエクスポートされた変数は、/etc/profile.d/*WaylandだけでなくシステムユーザーエクスペリエンスやXorgにも表示しないでください。

しかし、これは事実ではありません。たとえば、この/etc/profile.d/google-cloud-sdk.shスクリプトはいくつかのカスタム変数をエクスポートします。

export CLOUDSDK_ROOT_DIR=/opt/google-cloud-sdk
export CLOUDSDK_PYTHON=/usr/bin/python
export CLOUDSDK_PYTHON_ARGS=-S
export PATH=$CLOUDSDK_ROOT_DIR/bin:$PATH
export GOOGLE_CLOUD_SDK_HOME=$CLOUDSDK_ROOT_DIR

WaylandとXorgでGnomeにログインし、次のコマンドを実行します。systemctl --user show-environment

私たちは同じ変数を見ます:

...
XDG_RUNTIME_DIR=/run/user/1000
CLOUDSDK_PYTHON=/usr/bin/python
CLOUDSDK_PYTHON_ARGS=-S
CLOUDSDK_ROOT_DIR=/opt/google-cloud-sdk
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
...
GOOGLE_CLOUD_SDK_HOME=$CLOUDSDK_ROOT_DIR
...

他の多くの変数の中で。

2つの追加:

  • エクスポートされた変数は~/.profilesystemdユーザー環境には表示されません。これは/etc/profileスクリプト自体がソースではないことを意味します。/etc/profile.d/*スクリプトは直接ソースとして表示されます。
  • /etc/profile.d/*参照されたスクリプトはありません。システム環境ジェネレータ

それでは、systemdやgnomeがこれらのスクリプトを取得するための文書化された方法がないことを考えると、これはどのように可能ですか/etc/profile.d/*

ベストアンサー1

おすすめ記事