みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

JAVAの環境変数が初期化されてしまいます

Linux初心者です。

JDK6.0をインストールして、環境変数を次のように設定しました。
export JAVA_HOME=/usr/local/jdk1.6.0
export PATH=$JAVA_HOME/bin:$PATH
これで一旦はjavacやjavaコマンドが使えるようになるのですが、
bashを再起動すると、また使えなくなるので再設定しなければなりません。

調べてみた所、homeディレクトリの.bash_profileを変更すると
再設定の必要がなくなると書いていたので、
# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
PATH=~/bin:"${PATH}"
→ export JAVA_HOME=/usr/local/jdk1.6.0
→ export PATH=$JAVA_HOME/bin:$PATH
fi

と記述してみたのですが、やはりbash再起動後のPATHに
上記のパスは含まれていません。
私の記述方法が間違っているのでしょうが、
どうすれば自動的にパスを通すように設定できるのでしょうか?

ターミナルはubuntu6.10からGNOME端末を使用しています。
よろしくお願いします。

投稿日時 - 2007-03-20 07:41:50

QNo.2848757

困ってます

質問者が選んだベストアンサー

#2の方が書いていますが、source ~/.bash_profile でどうなりますか?
あとは、/etc/profile の末尾にでも set -x を書いてみて実行されるコマンドを表示してみるとか。

投稿日時 - 2007-03-21 01:14:36

お礼

ご回答感謝します。

source ~/.bash_profileでは、何も表示されません。
ですがその後、java/javacコマンドが使えるようになってます!
しかしターミナルを再起動するとまた使えなくなってます・・・。

/etc/profileの末尾にset -xを加えてみましたが・・・
それからどうすればいいのか解かりません。。。

よろしくお願いします。

投稿日時 - 2007-03-21 15:48:08

ANo.5

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(6)

ANo.6

/etc/profile.d
がありますか?
もし,あればそのディレクトリの中に
javaenv.shというファイルを作って
そこには
export JAVA_HOME=/usr/local/jdk1.6.0
export PATH=$JAVA_HOME/bin:$PATH
と書いとけばよいかもしれません.

ついでにcsh用には
javaenv.csh
setenv JAVA_HOME=/usr/local/jdk1.6.0
setenv PATH=$JAVA_HOME/bin:$PATH

ubuntuのドキュメントの起動時の動作
(スクリプトの実行順儒)について
書かれているものがあれば,それを見るのが一番です.

投稿日時 - 2007-03-21 19:19:01

お礼

回答ありがとうございます。
/etc/profile.d
は、私のシステム内にはありませんでした、、

JDK6.0をいくらいじっても全く改善の余地が無かったので、
本日JDK5.0を駄目元で入れてみたのですが、、、

・・・一発でパス通りました。

とりあえず今は5.0でやっていこうと思います。
それにしてもJDK5.0と6.0の違いは一体何だったんでしょうか。。
回答していただいた皆さん、御世話になりました!
どうもお騒がせしました。

投稿日時 - 2007-04-03 14:40:32

ANo.4

んー。
~/.bashrc になんて書いてあるのかが気になるところです。

ひょっとして ~/.bash_profile に

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi


このような記述がどこかに書いてあったりしませんか? ~/.bashrc が実際に存在している場合、ここが走ると ~/.bashrc に書かれている内容で上書きされちゃう気がします。

投稿日時 - 2007-03-20 20:21:16

お礼

ご回答ありがとうございます。

~/.bash_profile中に同じ記述がありました!
# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
  . ~/.bashrc
fi

~/.bashrcもホームディレクトリ下に存在していますし、
こいつが原因なのか!と思いつつも、
中身見ると長いコードが書いてあるし、
削除するのはまずいかなーと思って

# include .bashrc if it exists
#if [ -f ~/.bashrc ]; then
#  . ~/.bashrc
#fi

コメントアウトしてみました。
が、ターミナルは変わらず・・・です。。

私のパソコンがおかしいのでしょうか??

投稿日時 - 2007-03-21 15:39:56

ANo.3

# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
 PATH=~/bin:"${PATH}"
fi

このコードの意味は,もしもホームディレクトリの下に,binというディレクトリがあったら,それをPATHに追加するという意味になります.
コメントの英文も,それを意味しています.

このifのブロックの中に書いたものは,binというディレクトリがホームディレクトリ以下に存在していないと,実行されません.

export JAVA_HOME=/usr/local/jdk1.6.0
export PATH=$JAVA_HOME/bin:$PATH

これを,if ~ fi の中に書いてしまったので,実行されていないのでしょう.

常に,javaがPATHに追加されるようにするには,fi より後ろに書いて,ifのブロックの外に出さなくてはなりません.

投稿日時 - 2007-03-20 14:30:03

お礼

ご回答に感謝します。

# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
PATH=~/bin:"${PATH}"
fi

このコードはそういう意味だったんですか。私のホームディレクトリ以下にbinというディレクトリがあった覚えはありませんので、実行されるはずないですよね。

# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
PATH=~/bin:"${PATH}"
fi
JAVA_HOME=/usr/local/jdk1.6.0
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

早速、if~fiの外側に抜き出してみました。
しかし、やはり環境変数は設定されていません・・・
再起動した後にも試しましたがやはり同じでした。

念のため
JAVA_HOME=/usr/local/jdk1.6.0
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

export JAVA_HOME=/usr/local/jdk1.6.0
export PATH=$JAVA_HOME/bin:$PATH
に書き換えても試してみましたが、同じ結果でした。

ターミナルウィンドウにコピペすると、すぐに(その端末内では)使えるようにはなるので、記述自体は間違ってないとは思うのですが・・・

投稿日時 - 2007-03-20 18:38:57

.bash_prifileを編集後にログインし直すか、
source ~/.bash_prifile
とコマンドを打ってもダメでしょうか?

投稿日時 - 2007-03-20 12:56:20

お礼

lowrider_2005さん、度々のご回答ありがとうございます。

.bash_profile編集後ログインし直してもダメだったので、
再起動もしてみましたが、結果は同じでした・・・

他に原因があるかもしれないので、
一応.bash_profileファイル全体を貼ってみます。

# ~/.bash_profile: executed by bash(1) for login shells.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/login.defs
#umask 022

# include .bashrc if it exists
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

# set PATH so it includes user's private bin if it exists
if [ -d ~/bin ] ; then
PATH=~/bin:"${PATH}"
JAVA_HOME=/usr/local/jdk1.6.0
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
fi

このシステムのユーザーは私一人なので、読み込まれないprofileを編集している筈はないと思うのですが・・・

よろしくお願いします。

投稿日時 - 2007-03-20 13:51:55

JAVA_HOME=/usr/local/jdk1.6.0
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

と書いてみるとどうなりますか?

投稿日時 - 2007-03-20 11:03:05

お礼

素早いご回答ありがとうございます!

.bash_profile内の、

export JAVA_HOME=/usr/local/jdk1.6.0
export PATH=$JAVA_HOME/bin:$PATH

という記述を

JAVA_HOME=/usr/local/jdk1.6.0
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

に変えてみたのですが、やはりjavacコマンドは使えませんでした。
これを端末に打ち込めばいとも簡単に使えるのですが・・・

投稿日時 - 2007-03-20 12:15:19

あなたにオススメの質問