• ベストアンサー

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端末を使用しています。 よろしくお願いします。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4835/10236)
回答No.5

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

TAK81306
質問者

お礼

ご回答感謝します。 source ~/.bash_profileでは、何も表示されません。 ですがその後、java/javacコマンドが使えるようになってます! しかしターミナルを再起動するとまた使えなくなってます・・・。 /etc/profileの末尾にset -xを加えてみましたが・・・ それからどうすればいいのか解かりません。。。 よろしくお願いします。

その他の回答 (5)

  • kabaokaba
  • ベストアンサー率51% (724/1416)
回答No.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のドキュメントの起動時の動作 (スクリプトの実行順儒)について 書かれているものがあれば,それを見るのが一番です.

TAK81306
質問者

お礼

回答ありがとうございます。 /etc/profile.d は、私のシステム内にはありませんでした、、 JDK6.0をいくらいじっても全く改善の余地が無かったので、 本日JDK5.0を駄目元で入れてみたのですが、、、 ・・・一発でパス通りました。 とりあえず今は5.0でやっていこうと思います。 それにしてもJDK5.0と6.0の違いは一体何だったんでしょうか。。 回答していただいた皆さん、御世話になりました! どうもお騒がせしました。

  • gtk042
  • ベストアンサー率50% (2/4)
回答No.4

んー。 ~/.bashrc になんて書いてあるのかが気になるところです。 ひょっとして ~/.bash_profile に # Get the aliases and functions if [ -f ~/.bashrc ]; then   . ~/.bashrc fi このような記述がどこかに書いてあったりしませんか? ~/.bashrc が実際に存在している場合、ここが走ると ~/.bashrc に書かれている内容で上書きされちゃう気がします。

TAK81306
質問者

お礼

ご回答ありがとうございます。 ~/.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 コメントアウトしてみました。 が、ターミナルは変わらず・・・です。。 私のパソコンがおかしいのでしょうか??

  • SN1701
  • ベストアンサー率76% (16/21)
回答No.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のブロックの外に出さなくてはなりません.

TAK81306
質問者

お礼

ご回答に感謝します。 # 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 に書き換えても試してみましたが、同じ結果でした。 ターミナルウィンドウにコピペすると、すぐに(その端末内では)使えるようにはなるので、記述自体は間違ってないとは思うのですが・・・

回答No.2

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

TAK81306
質問者

お礼

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を編集している筈はないと思うのですが・・・ よろしくお願いします。

回答No.1

JAVA_HOME=/usr/local/jdk1.6.0 PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME PATH と書いてみるとどうなりますか?

TAK81306
質問者

お礼

素早いご回答ありがとうございます! .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コマンドは使えませんでした。 これを端末に打ち込めばいとも簡単に使えるのですが・・・

関連するQ&A

  • 環境変数の設定(PATH)

    今、環境変数の設定(PATHの設定)を行っています。 OSは、RedHat9です。 スーパーユーザーのPATHは、 echo $PATHコマンドで見ると /usr/local/sbin:/usr/bin:/home/user1/test となっている。 しかし.bash_profileをみると PATHには、/usr/local/sbin:/usr/binしか 設定しておらず、 ユーザー(user1)の.bash_profileにも /home/user1/testをPATHに設定していない。 どこかでPATH設定を行っていると思いますが わかりません。 PATHの設定は、.bash_profileを設定するとは わかっているのですが、 スーパーユーザーの.bash_profileの記述と echo $PATHで見たPATHの構成がことなるのは なぜでしょうか? よろしくお願い致します。

  • LinuxにJAVAをインストしたのですが。

    Turbolinux6.5Serverにrootユーザーでrpm -Uvh jdk-1.3.1_01.i386.rpmを実行してJAVAをインストール後、確認のためexport PATH=/usr/jdk1.3.1/binを打ってパスが通ったことを確認し、でvi ~/.bash_profileでファイルを開きPATH="$PATH:/usr/java/jdk1.3.1/binを一行追加し、再起動後javac▲Hello.javaをコンパイルしようとしたのですが、bash: javac: command not found と出て実行できません。どうしたらよいのでしょうか。設定が足りないのでしょか? どなたか教えてください!

  • linuxでjavaがうまく動きません。

    linuxでjavaがうまく動きません。 Linux初心者です。JAVAを勉強しなければならなくなりました。SUSE Linuxです。マシンは自作のようですが、先輩が作ったものなのでよく分かりません。 まず、JDKをインストールしました。すると、パソコンを起動する時に「64ビットのマシンに32ビットのソフトウェアが入っています」というようなメッセージが表示されるようになってしまいました。これはJDKのせいだと思ったので、一度削除して64ビットのJDKと書いてあるソフトをもう一度インストールしました。(しかし、したつもりでしたがこれはできていませんでした) すると、JAVAが動かなくなってしまいました。 よく調べたところ、64ビットのJDKは32ビットのJDKをインストールした上でインストールしなければいけなかったということでした。 そこで、もう一度32ビットのJDK(jdk-6u22-linux-i586.bin)をダウンロードして実行し、64ビットのJDK(jdk-6u22-linux-x64.bin)を実行しました。 それから、「.bash_profile」のファイルに PATH=$PATH:$HOME/bin:usr/local/jdk1.6.0_22/bin JAVA_HOME=/usr/local/jdk1.6.0_22 export JAVA_HOME export PATH と書き込みました。 しかし、「javac」と入力するとコマンドがないと言われます。「java -version」と入力すると「"1.5.0_20"」と表示されます。多分「"1.6.0_22"」とか表示されないといけないのかな、と思ったので、前にインストールしたものが残っているのかと探してみましたが、いろんなサイトを参照しながらインストールしたので見つかりません。(というか、インストールしたものは全部アンインストールしたつもりでした) JAVAが動くようにするにはどうしたらいいのでしょうか?

  • Tomcatの起動に使用するJavaについて

    Tomcatをはじめてインストールする者で恐縮です。 Redhat Linux ES2.1上でTomcat4.1.30とApache1.3.27を連携させようとしています。 Tomcatを起動するには、JDKが必要のようですが、Linuxに標準で入っていたJREでは駄目なのでしょうか。 javaコマンドが普通に使えるのですが。。 試しに /root/.bash_profileに export JAVA_HOME=/opt/IBMjava2-131 export PATH=$PATH:$JAVA_HOME/bin なんて足してみたところstartup.shを実行すると Using CATALINA_BASE /usr/local/jakarta-tomcat-4.1.30 Using CATALINA_HOME /usr/local/jakarta-tomcat-4.1.30 Using CATALINA_TMPDIR /usr/local/jakarta-tomcat-4.1.30/tmp Using JAVA_HOME /opt/IBMjava2-131 と出ました。http://localhost:8080を見たところTOMCATのホームページが見れませんでしたのでやはり駄目でしょうか。JDKをインストールすべき? ご存知の方宜しくお願いします。

  • Javaの環境変数が設定出来ません

    JDKインストール後、コマンドプロンプトでjavacの確認を行った所、 「'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 と出ます。 システム環境変数の設定は 変数:Path  値:D:\java\jdk1.6.0_25\bin; 変数:JAVA_HOME 値:D:\java\jdk1.6.0_25 JDKをインストールしたフォルダは「D:\java\jdk1.6.0_25」なのですが、 コマンド:Pathでは「D:\java\jdk1.6.0_25\bin;,」 コマンド:Set JAVA_HOMEでは「JAVA_HOME=D:\java\bin」 と表示されます。 アドレスに間違いはないような気がするのですが・・・何故でしょうか; どなたかお願いします

  • 環境変数JAVA_HOMEとPATHの違い

    JAVAをはじめて間もない初心者です。 ふと疑問に思ったことがあるので、質問させていただきます。 先日、自宅サーバ(CentOS4.6)にjava(j2sdk1.4.2_16)をインストールしたのですが、OSに元々javaがインストールされていました。 SHELL># whereis java と打つと[java: /usr/bin/java]と出てきて、実際/usr/bin以下にjavaの実行ファイルがあります。 自分でインストールしたjavaは /usr/loacl/j2sdk1.4.2_16というディレクトリを作成してその下に展開しています。 システムの環境変数に自分でインストールしたjavaを指定しようと SHELL># export JAVA_HOME=/usr/local/j2sdk1.4.2_16 SHELL># export PATH=${JAVA_HOME}/bin:${PATH} と設定したのですが、 $PATHには/usr/binも設定されています。 javaを実行した場合は、どちらのjava実行ファイルが参照されるのでしょうか? (OSに元からインストールされているjava[/usr/bin/java]なのか、自分でインストールしたjava[/usr/local/j2sdk1.4.2_16/bin/java]なのか) そもそも、JAVA_HOMEは何のために設定するのでしょう?googleなどで「JAVA_HOMEとは」などと調べたのですが、イマイチ僕の欲しい答えが出てきません。 javaへのPATHさえ設定していれば、問題ないような気がするのですが、、。 とても稚拙な質問だと思いますが、良ければアドバイスよろしくお願いします。

    • ベストアンサー
    • Java
  • 環境変数PATH

    $PATHの中を変更したいです。 [root@****]# echo $PATH /usr/kerberos/sbin: /usr/kerberos/bin: /usr/local/bin: /bin:/usr/bin: /usr/java/jre1.6.0_14/bin: /home/takosu/bin: /usr/java/jre1.6.0_14/bin 「# echo $PATH」を行うと上記の様に表示されますが、 何故か「/usr/java/jre1.6.0_14/bin」が二つ表示されているので 一つを消したいんですが如何すれば良いでしょうか? ご回答宜しくお願い致します。

  • Fedora Core5にJavaを入れましたがコンパイル出来ません。

    Lnux初心者です。Fedora Core5にJavaを入れましたがコンパイル出来ません。 Javaのバージョンはj2sdk1.4.2_12とjdk1.5.0_08です。インストール確認も出来Pathには/home/****の.bash_profileにJAVA_HOME=/usr/java/j2sdk1.4.0_12 PATH=$PATH:$JAVA_HOME/bin CLASSPATH=.:$JAVA_HOME/lib/tools.jar export JAVA_HOME PATH CLASSPATH を追加しましたがコンパイル時にbash: javac: command not found と言うエラー表示がでます。どうにかLinuxでJavaをと考えているのですが、先に進めず困っています。Pathの通しかたがダメなのかどうかも判りません。どうかよろしくお願いします。

  • Tomcatの起動ができません。

    初めまして。 Tomcatについてなのですが、 インストール自体はできたみたいで、Tomcatのフォルダの直下のbinの直下のstartup.shを実行しても、 ---------------------------------------- [root@java bin]# ./startup.sh Using classpath: /usr/src/jakarta/jakarta-tomcat/lib/*:/usr/java/jdk1.3.0_02/lib /tools.jar [root@java bin]# ----------------------------------------- のようになり、Tomcatが起動されません。 何かわかることがありましたら、ご教授お願い致します。 ちなみに環境設定は以下のようにrootディレクトリ直下の.bashrcに設定しています。 export JAVA_HOME=/usr/java/jdk1.3.0_02 export PATH=$PATH:$JAVA_HOME/bin export TOMCAT_HOME=/usr/src/jakarta/jakarta-tomcat

    • ベストアンサー
    • Java
  • Apache・tomcat同時再起動シェルスクリプト作成

    見よう見まねで初めて下記のシェルスクリプトを作成しました。 権限をrootに変更する文を追加したいのですが 良く解りません。ご教授よろしくお願い致します。 作成目的は、アプリプログラム反映時、一回のコマンド発行で起動を 行いたく作成しました。(面倒なので) #!/bin/bash # ############################################### # ## アプリサーバ二重化用手動再起動コマンド ### # ############################################### # ############## 環境設定 ####################### export PATH="/usr/local/apache2/bin" export CATALINA_HOME="/usr/local/tomcat" export JAVA_HOME="/usr/local/jdk1.5.0_10" export PATH="/usr/local/jdk1.5.0_10/bin" export TOMCAT_HOME="/usr/local/tomcat" # ############## 変数代入 ####################### # CMD1=`ps -ef | grep java | grep -v grep | wc -l` CMD2=`ps -ef | grep httpd | grep -v grep | wc -l` # ############## 停止コマンド発行 ############### # /usr/local/apache2/bin/apachectl stop if [ "$CMD2" -ge "1" ] ;then killall httpd /usr/local/tomcat/bin/shutdown.sh elif [ "$CMD2" = "0" ] ;then /usr/local/tomcat/bin/shutdown.sh fi # ############## 開始コマンド発行 ############### if [ "$CMD1" -ge "1" ] ;then killall java /usr/local/tomcat/bin/startup.sh elif [ "$CMD1" = "0" ] ;then /usr/local/tomcat/bin/startup.sh fi if [ "$CMD1" -ge "1" ] ;then /usr/local/apache2/bin/apachectl start elif [ "$CMD1" = "0" ] ;then /usr/local/tomcat/bin/startup.sh     /usr/local/apache2/bin/apachectl start fi