システム全体の環境変数Java_HOME
をrootを含むすべてのユーザーユーザーに設定したいだけです。
要件:
Ubuntu、およびその他の* nixプラットフォームの場合は、/etc/profile.d
という名前の新しいスクリプトをJava.sh
に追加します。
echo "export Java_HOME=/usr/lib/jvm/default-Java" > /etc/profile.d/Java.sh
除外されたその他の考慮事項:
/etc/environment
-機能しますが、他のツールを使用して維持するのは困難です(または他のツールで編集します)。そして/etc/profile
-/etc/environment
と同じ欠点Debian/Ubuntuでは / etc/environment
Red Hatに相当するものは知りません。
/ etc/profileを除外した理由がわかりません。それが正しい場所です。
_/etc/environment
_は廃止されているか、Debianで使用されていないという回答があり、これは(バージョン7の時点では)誤りです。
ファイルは実際にはPAMによって読み取られます。具体的には、envfile
フラグのデフォルトを介してpam_env(8)
です。マンページのFILESセクションにもこのデフォルトが記載されています。
引用されたウィキ(特にロケール1)は、ロケールベースの環境変数が_/etc/profile
_に含まれることを意味していると単に述べています。彼らの声明((Debianの古いバージョンでは/ etc/environmentも))は曖昧で、ロケールの文脈にあります。
_/etc/pam.d
_を介して簡単にgrepを実行すると、次のようになります。
_root@box:/etc/pam.d# grep pam_env.so *
atd:auth required pam_env.so
cron:session required pam_env.so
cron:session required pam_env.so envfile=/etc/default/locale
login:session required pam_env.so readenv=1
login:session required pam_env.so readenv=1 envfile=/etc/default/locale
sshd:auth required pam_env.so # [1]
sshd:auth required pam_env.so envfile=/etc/default/locale
su:session required pam_env.so readenv=1
su:session required pam_env.so readenv=1 envfile=/etc/default/locale
_
これらの構成行は追加的であり、最初の行にはenvfile
がないため、デフォルトで_/etc/environment
_になります。
もちろん、これはすべて、使用しているバイナリ(crond
、ログインシェルなど)がPAMに対してコンパイルされているかどうかに依存しています。
最後に、これは、PAMを使用する他のシステム(RedHatなど)も同じように動作することを意味します(それぞれのマンページで確認できます)。
補足: モジュール環境 をご覧ください。何十、何百ものユーザーに、複雑でバージョン管理された、自己拡張可能な簡潔なUNIX環境を提供する必要があるたびに、これを使用します。主に、大規模なマルチユーザーHPC環境で使用されます。 1つの特定の変数にそれを使用するだけでも確かに過剰設計されますが、いくつかのソフトウェアパッケージとその環境以上が必要になると、素晴らしい仕事をします。
/etc/enviroment
は、最後のdebian安定版リリースでは使用されていません。 Sorin Sが言っているように、このポープースのために*.sh
に独自の/etc/profile.d/
ファイルを作成することをお勧めします。 https://wiki.debian.org/EnvironmentVariables を参照してください
/etc/profile
が機能するはずです。念のためにテストしましたが、export SOMETEST=1234
を/etc/profile
に入れて、再ログインした後、echo $SOMETEST
が1234
を期待どおりに提供しました。また、gnome-terminal
から
この場合、特定のファイルを使用することはできません。そう....
この場合、/etc/profile
が適切な場所になります。ただし、現在ログインしているユーザーは新しいログインセッションを取得する必要がありますが、これはそれほど大きな問題ではありません。
@ wk01:/etc/profile
は、デフォルトでは非ログインシェルによってロードされません。あなたの.bashrc
はおそらくそれをロードしています...