![Linux系システム上の環境変数](https://rvso.com/image/1438160/Linux%E7%B3%BB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E4%B8%8A%E3%81%AE%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0.png)
シェルの環境変数 (Bourne 系シェルのプロファイル、bahsrc、zshrc、zshenv など) に依存しない最も一般的な方法で、ユーザーの環境変数を設定するにはどうすればよいでしょうか。アイデアとしては、ユーザーのログイン時にユーザーの環境変数を設定し、あらゆる種類のシェルを含むすべてのプロセス (シェル プロセスだけでなく、他のプロセスによって生成されたもの) でそれらを使用可能 (フォーク) にすることです。
答え1
このUbuntuドキュメントについて話す~/.pam_environment
:
セッション全体の環境変数
特定のユーザー(システム全体ではなく)にのみ影響する環境変数設定に適したファイルは、
~/.pam_environment
およびです~/.profile
。これらのファイルの1つを編集した後、再ログイン変数を初期化するためです。
~/.pam_environment
このファイルは、特にユーザーの環境を設定するためのものです。これはスクリプト ファイルではなく、1 行に 1 つの代入式で構成されています。この例では、変数 FOO をリテラル文字列に設定し、PATH 変数を変更します。
FOO=bar PATH DEFAULT=${PATH}:${HOME}/MyPrograms
注記:
例のような単純な変数割り当てを行う場合は、値を引用符で囲むことはできません
FOO=bar
。変数の拡張が機能するには、スクリプト ファイルとは異なる、PATH を変更するために使用される構文が必要です。
~/.pam_environment
さまざまな GUI を使用して言語または地域の形式を設定するときに書き込まれます。したがって、たとえば~/.pam_environment
手動で編集して LC_TIME を設定した場合、その後言語サポート GUI を使用して地域の形式の設定を変更すると、エントリが上書きされます。
このファイルは、と同様に/etc/environment
、pam_env.so
これはログイン プロセスの一部として実行され、シェルとは別のものになると思います。