web-dev-qa-db-ja.com

環境変数の変更

/etc/environmentファイルを次のように変更しました:

M2_HOME=/usr/local/Apache-maven/Apache-maven-3.1.1
M2=$M2_HOME/bin
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
PATH=$M2:$PATH
Java_HOME=/usr/local/jdk1.6.0_45
PATH=$Java_HOME:$PATH

this に似たようなことをしようとしています)

ただし、たとえばecho "$M2"と入力して環境変数を確認しようとすると、すべての変数の結果が空行になり、$ PATHはファイルを編集する前と同じになります。変更が機能しなかったのはなぜですか?シェルを閉じて、開いてみましたが、何も起こりません。

3
teaLeef

/etc/environmentは、ログイン時にPAMによって処理されるため、適切な再ログインを有効にします。さらに、@ przemoが指摘したように、スクリプトとして実行またはソースされないため、変数は展開されません。 .sh/etc/profile.d/ファイルにそのような変数を入れます:

Sudo tee -a /etc/profile.d/my_vars.sh <<"EOF"
export M2_HOME=/usr/local/Apache-maven/Apache-maven-3.1.1
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
export Java_HOME=/usr/local/jdk1.6.0_45
export PATH=$Java_HOME:$PATH
EOF

これも完全に有効にするには再ログインが必要になりますが、ログインシェルを実行してすぐにテストできます。

$ bash -l
$ echo $PATH
/usr/local/jdk1.6.0_45:/usr/local/Apache-maven/Apache-maven-3.1.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Gunnarが指摘したように、PATHへのデフォルトの割り当ては/etc/environmentのままであり、上記のスクリプトに追加しないでください。詳細については、 このコミュニティWikiページ を参照してください。

3
muru

/etc/environmentはスクリプトファイルではありません。変数を使用することはできません。さらに読むために https://help.ubuntu.com/community/EnvironmentVariables

2
przemo