$ FOO構文を使用して/ etc/environmentに「ポインター」を持つことは有効ですか?現在、私の/ etc/environmentは次のようになっています。
Java_HOME=/usr/lib/jvm/Java-6-openjdk
MAVEN_HOME=/usr/bin/Apache-maven/Apache-maven-3.0.4
M2_HOME=$MAVEN_HOME
M2=$MAVEN_HOME/bin
PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$Java_HOME/bin:$MAVEN_HOME/bin
しかし、私は期待している結果を得ていません:
~$ echo $Java_HOME
/usr/lib/jvm/Java-6-openjdk
~$ echo $MAVEN_HOME
/usr/bin/Apache-maven/Apache-maven-3.0.4
~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin/bin:/usr/games:$Java_HOME/bin:$MAVEN_HOME/bin
/etc/environment
に関するドキュメントはあまり見つかりませんでしたが、期待どおりに機能しない理由は、「スクリプトファイルではない」ため、シェルによって処理されないためです。定義された変数は機能しません。これは、表示されている動作を説明しています。
.profile
または.bashrc
でこれらの種類の環境変数を定義するか、すべてのユーザーに必要な場合は/etc/profile.d
または/etc/bash.bashrc
で定義することをお勧めします。
環境変数の設定に関するかなり詳細なドキュメントがいくつかあります here であり、.profile
または.bashrc
のいずれかを、このようなものを置くのに適した場所として示しています。
/etc/environment
でポインターを使用できますが、別の構文を使用する必要があります。
試してください:
Java_HOME=/usr/lib/jvm/Java-6-openjdk
MAVEN_HOME=/usr/bin/Apache-maven/Apache-maven-3.0.4
M2_HOME=${MAVEN_HOME}
M2=${MAVEN_HOME}/bin
PATH="/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:${Java_HOME}/bin:${MAVEN_HOME}/bin"
別の変数の割り当てを参照する場合は、変数名を中括弧{}
で囲んでください。したがって、$Java_HOME
の代わりに${Java_HOME}
を使用します。また、他の変数へのポインタがある変数の値を引用符で囲む必要があるようです:
PATH="... ${SOME_VAR} ..."
Ubuntuのドキュメントでは、これは不可能に思えます。しかし、答えがあります。
ANSWER:/etc/bash.bashrc
に永続的なシステム全体の環境変数を作成します
Java_HOME="/tools/Java"
...
PATH="$Java_HOME:$PATH"
詳細:
これに関するより長い回答を投稿しました AskUbuntuの質問