XアプリケーションがアクセスできるようにPATHまたは他の環境変数をどのように設定しますか?

XアプリケーションがアクセスできるようにPATHまたは他の環境変数をどのように設定しますか?

KDEが認識するように環境変数をどのように設定しますか?

ビシェル環境(KDE)でパスを設定するには?

上記の2つの質問とは異なり、GNOMEではどうするかを知りたいです。あるいは、より良い方法は、ウィンドウマネージャとは独立した方法があることです。シェル/ターミナルの場合は通常~/.bashrc

答え1

これpam_envPAMモジュールを使用すると、すべてのユーザー(システム全体)またはユーザーのみ(セッション全体)で動作するかどうかに応じてin/etc/environmentまたはoutに設定できます。~/.pam_environment

システム全体の環境変数

特定のユーザーだけでなくシステム全体に影響を与える環境変数の設定は、システムまたはデスクトップセッションがロードされたときに実行される多くのシステムレベルのスクリプトに配置しないでください。

/etc/environment- このファイルはシステム全体の環境変数設定専用です。スクリプトファイルではありませんが、1行に1つの割り当て式で構成されています。特に、このファイルはシステム全体のロケールとパス設定を保存します。

セッション範囲環境変数

システム全体ではなく特定のユーザーにのみ影響する環境変数の設定は、次のように設定する必要があります。

~/.pam_environment- このファイルは、ユーザーエクスペリエンスを設定するために特に使用されます。スクリプトファイルではありませんが、1行に1つの割り当て式で構成されています。

注:.pam_environment変数を初期化するには、再度ログインする必要があります。単に端末を再起動するだけでは変数を使用できません。

より多くの情報が必要な場合は訪問してくださいUbuntu環境変数 Wiki

答え2

/etc/X11/Xsession.d/...またはLinux(?)に従って、そのディレクトリの行に沿って実行されます。その上に少し書いています。ここ

概念は、ログイン後にディスプレイマネージャが「Xsession」を起動し、そのディレクトリ内のすべてをアルファベット順にソース(!)することです。 PATHを変更するスクリプトを追加するだけです。 Xsessionは最終的にDEになり、通常、すべてのプロセスはそのXsessionの子であるため、PATH環境を継承します。

答え3

プロセスは、自分自身を開始した親プロセスから環境を継承します。子プロセスでPATHまたは他の環境値を変更するには、変数を親プロセスの値に設定し、シェルにある場合は変数をエクスポートしてから子プロセスを開始できます。子プロセスは、起動時に1つ以上の初期化ファイルを読み取って独自の環境を変更することもできます。

したがって、答えるべき2つの質問が残っています。

PATHまたは環境変更の影響を受けたいプロセスにつながる親/子継承ツリーは何ですか?

このツリーの関連プロセスでは、どの初期化ファイルを使用/読み取り/インポートしますか?

以下は、継承ツリーの意味を示すps(1)出力の一部です。

# /bin/ps -o 'uid:5,pid:5,ppid:5,user:4,args' axf 

UID   PID  PPID USER COMMAND
  0     1     0 root /usr/lib/systemd/systemd
  0  1481     1 root /usr/sbin/gdm-binary -nodaemon
  0  1497  1481 root  \_ /usr/libexec/gdm-simple-slave ...
  0  1504  1497 root      \_ /usr/bin/Xorg :0 ...
  0  1855  1497 root      \_ gdm-session-worker ...

\_グラフィックシーケンスとPIP / PPID番号(プロセスIDと親PID)を書き留めます。 PID1855は(一部の子プロセス?)1497で始まり、1497は1481で始まり、1481は祖先プロセス0によって始まるPID1によって始まる。

影響を及ぼすプロセスに対して同様の継承トレースを実行し、関連する初期化ファイルを見つけて、対応するツリーのどこかでPATHを変更します。おそらく次のようになります。

PATH=${PATH}:/usr/local/bin

関連情報