/ etc / environmentと/ etc / profileの違いは何ですか?


25

前者は後者の前にロードされることを理解していますが、概念的な違いは何ですか?いくつかの変数を一方に設定し、他方には設定しない適切な理由はありますか?/etc/environmentシステムによって実行されるすべてのプロセスの環境を設定するために存在するように思われる事実を除き、/etc/profileログインシェルから使用および伝播される環境を設定するためのものですが、正しいですか?

また、副次的に、どのプログラムが伝統的に読み取る/etc/environmentか?POSIXに関連するのですか、それとも単なる慣習ですか?

回答:


11

Ubuntuヘルプから抜粋

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

/etc/profile -このファイルは、bashログインシェルに入るたびに(たとえば、コンソールまたはssh経由でログインするとき)、デスクトップセッションがロードされるときにDisplayManagerによって実行されます。

これはすべて慣習に過ぎないと思いますが、標準からそれほど遠くはありません(RedHatのようなシステムについては知りません)。


RedHatで動作します(7.6以降)。「/ etc / environment」は空で、私のサーバーと設定VAR=valueはシェルで有効になりました(再ログイン後)。
DKroot

39

/etc/environmentPOSIXの一部ではなく、PAM(Pluggable Authentication Module)に属し、PAMサポート付きでコンパイルされたプログラムのみがそれを使用できます(主にログインシステム、その後シェルまたはユーザー環境を起動します)。これは、シェルによって読み取られないことを意味します。

を使用/etc/environmentしてプログラムを表示できますgrep -l pam_env /etc/pam.d/*

したがって/etc/environment、通常はシェルから起動されないプログラムの変数を設定するために使用されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.