前者が後者の前にロードされることを理解していますが、概念的な違いは何ですか?いくつかの変数を一方に設定し、他方に設定しないほうがよい理由はありますか? /etc/environment
は、システムで実行されるすべてのプロセスの環境をセットアップするために存在するようですが、/etc/profile
は、ログインシェルから使用および伝播される環境をセットアップするためのものです。
また、補足として、従来プログラムは/etc/environment
?それはPOSIXに関連していますか、それとも単なる慣例ですか?
/etc/environment
-このファイルは、特にシステム全体の環境変数設定用です。これはスクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。具体的には、このファイルにはシステム全体のロケールとパスの設定が格納されます。
/etc/profile
-このファイルは、bashログインシェルに入るたびに(たとえば、コンソールからログインするとき、またはsshを介して)、デスクトップセッションが読み込まれるときにDisplayManagerによって実行されます。
私はこれは単なる慣例であると思いますが、標準からそれほど遠くないと思います(システムのようなRedHatについては知りません)。
/etc/environment
はPOSIXの一部ではなく、PAM(Pluggable Authentication Module)に属しており、PAMサポートでコンパイルされたプログラムのみが使用できます(主にログインシステム、その後シェルまたはユーザー環境を起動します)。これは、シェルによっても読み取られないことを意味します。
/etc/environment
とgrep -l pam_env /etc/pam.d/*
を組み合わせて使用すると、プログラムを表示できます。
したがって、/etc/environment
は、通常はシェルから起動されないプログラムの変数を設定するために使用されます。