2012-01-09 8 views
0

私は私が書いたように、シェルスクリプトを通じて私のJavaプログラムを実行しようとしていた。シェルスクリプト:絶対パスをコマンドに入れる方法は?

java -jar $(pwd)"/test.jar" 

をそれは完璧に働いたが、私は以下のコードになったとき:

PATH=$(pwd)"/test.jar"' 
java -jar $PATH 

その後、私はエラーを得ました: " Run.sh:3:java:not found " (Ubuntuで実行中)

私はシェルスクリプトの経験がほとんどないので、何が問題なのか教えてください。ありがとう。

答えて

4

PATHは、シェルが実行可能ファイルを見つけるために使用する特殊な環境変数です。 test.jarを指すようにPATHを変更したので、シェルはjavaを見つけることができません。

変数を別のものにコールします。

例:

LIB_PATH="$(pwd)/test.jar" 
java -jar ${LIB_PATH} 
+2

+1しかし、我々は特別のenv VARSの話題にしていることから、同様に$ PWDを使用するのではなく – SiegeX

1

$(PWD)の値は、スクリプトが(印刷作業ディレクトリ)から呼び出されているディレクトリに依存します。 jarファイルが存在するディレクトリ以外のディレクトリからスクリプトを呼び出すと、間違ったパスを取得します。シェルが他のバイナリを見つけられないように、SHELLの検索パスを変更しました。 java。

+0

外部バイナリを呼ぶかもしれません問題は、彼がそれを見つけるのに使う 'PATH'変数を上書きしたため、彼のシェルがもう' java'バイナリを知らないことです。 – SiegeX

1

PATHは、あなたのシステムが実行可能ファイル(あなたの場合はjava)を見つけるための方法を定義するシステム予約変数です。したがって、コード内でtest.jarの変数として使用しないでください。

私の意見では、あなたのコードのようなものでなければなりません:

#!/bin/sh 

PROGPATH='/path/to/your/test.jar' 
JAVAEXEC=`which java` 
JAVAPARAMS='-j' 

GLOBALPATH="$JAVAEXEC $JAVAPARAMS $PROGPATH" 
echo $GLOBALPATH 
関連する問題