systemdを使用するときは、~/.profileまたは~/.bashrcで環境変数を宣言する必要がありますか?

systemdを使用するときは、~/.profileまたは~/.bashrcで環境変数を宣言する必要がありますか?

私が見るにはよさそうです。environment.d~/.config/environment.d/*.confこれ以上の環境変数を宣言する必要がなくなり、~/.bashrc環境~/.profile変数がソースとして提供されるようになりました。それ以外の理由がなければ、これらの宣言はシェル固有の構文で書くことができます。

この仮定は正しいですか?シェルに固有の環境変数をシェルrcファイルまたは環境変数を含むシステムに入れる理由はありますか~/.profile

答え1

これらのファイルはさまざまな用途に使用されますが、依然として補完的です。

  • environment.d定義システムユーザーサービス変数;
  • .bashrc、変数を定義する場合は、Bashのログインではなく対話型インスタンスの変数を定義します。
  • .profile、変数を定義すると、Bash(および他のシェル)の対話型ログインインスタンスに対して定義されます。

.bashrcしたがって、変数を設定すると、.profileそのシェルインスタンスにその変数が設定されることが保証されます。ファイルに変数を設定すると、シェルがenvironment.d含まれているか含まれない可能性がある、対応するユーザーサービスインスタンスに変数が設定されることを保証します(他の仲介者がある可能性がある、参考資料を参照sshd)。

私が見たもう1つの違いは、変更が後で実行されるすべてのシェルに適用されること.bashrcです.profile。変更は、ユーザーセッションと関連サービスが再ロードまたは再起動されたときにのみ適用されますenvironment.d

〜のようにムルenvironment.dファイルの機能がシェル初期化スクリプトよりも制限的であることが注釈に記載されています。

関連情報