正しい場所は何ですか:
環境変数に関するコミュニティWikiページ が整理に役立つと思います
Sagarchaliseの答えに追加するために、リンクが示唆するものを設定の適切な場所として要約できます。
/etc/environment
を使用/etc/profile
または/etc/bash.bashrc
を使用しないでくださいページから:
/etc/environment
[...]は、特にシステム全体の環境変数設定用です。スクリプトファイルではなく、1行に1つずつ割り当て式で構成されています。具体的には、このファイルにはシステム全体のロケールとパス設定が保存されます。
/etc/profile
の使用は非常にUnix-yの方法ですが、Ubuntuではその機能が大幅に低下します。 /etc/bash.bashrc
を指し、/etc/profile.d
からエントリを収集するためにのみ存在します。
私のシステムでは、profile.dの唯一の興味深いエントリエントリは/etc/profile.d/bash_completion.sh
です。
Ubuntuページの以前のバージョンでは~/.pam_environment
が推奨されていましたが、現在のところ、それが機能しない場合は、
~/.profile
-起動プロセスのデスクトップセッション中にDisplayManagerによって自動的に実行されるのと、テキストコンソールからログインするときにログインシェルによって自動的に実行されるため、環境変数の割り当てを配置するのに最適なファイルです。
~/.bash_profile
または~./bash_login
-これらのいずれかが存在する場合、bashがログインシェルとして起動されると、bashは~/.profile
の代わりにそれを実行します。 Bashは~/.bash_profile
より~/.bash_login
を優先します。 [...]これらのファイルは、デフォルトではグラフィカルセッションに影響しません。」
~/.bashrc
-"...変数を設定する最も簡単な場所かもしれません"。あなたが持っている:
/ etc/profile:Bourne Shell(sh(1))およびBourne互換シェル(bash(1)、ksh(1)、ash(1)、...)のシステム全体の.profileファイル。
lucidとMaverickで実行される
/etc/profile.d/*.sh
存在し、ユーザーのシェルがbashの場合:
/etc/bash.bashrc
ユーザー環境では、シェルに固有の紛らわしい配列があり、それが「ログインシェル」と見なされるかどうかがあります。シェルがbashの場合:
~/.bash_profile
The personal initialization file, executed for login shells
~/.bashrc
The individual per-interactive-Shell startup file
sh /ダッシュの場合:
$HOME/.profile
zshの場合、 これを理解するため を試みることすらありません。
https://help.ubuntu.com/community/EnvironmentVariables で推奨されているとおり:
すべてのユーザーに影響を与えることを目的としたグローバル環境変数は、/etc/environment
に入れる必要があります。
ユーザー固有の環境変数は、~/.pam_environment
で設定する必要があります。
Ubuntuで環境変数を設定するためのプロファイルおよびrcファイルを避けてください。彼らは私が価値があるよりも多くの頭痛を引き起こしました。
ただし、これは行われるよりも簡単です;)
私と同じ設定のギャップが発生する可能性があります。以下の暗号化されたホームの回避策を参照してください。
~/.pam_environment
:PATH DEFAULT=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${HOME}/bin
IDEA_JDK DEFAULT=${HOME}/Applications/jdk
なぜい静的パスなのか? ${PATH}
は機能しません。私はそれを回避しようとして数回ログインをブロックしましたので、デフォルトのい静的コピーに固執しています:)
Precise 12.04 Beta 2までのUbuntuリリースでは、暗号化されたホームディレクトリを使用している場合、/etc/pam.d/common-session
を変更して~/.pam_environment
をロードする必要があります。このソリューションは以前のリリースで動作するようですが、私はテストしていません。
これは、暗号化されたホームディレクトリの問題のようです。追加した
セッションが必要pam_env.so
/etc/pam.d/common-sessionの最後で、〜/ .pam_environmentが読み取られます。ホームディレクトリが暗号化されていない別のシステム(また10.04)では、回避策は不要です。おそらく私の場合、システムは復号化される前に〜/ .pam_environmentを読み取ろうとします。
スーパーユーザーに関する私の回答から修正: https://superuser.com/a/408373/66856