我试图通过shell脚本执行我的java程序,所以我写道:
java -jar $(pwd)"/test.jar"
它完美无缺,但当我转向下面的代码时:
PATH=$(pwd)"/test.jar"'
java -jar $PATH
然后我收到一个错误:“Run.sh:3:java:not found” (在Ubuntu上运行)
我对shell脚本的经验很少,所以请让我知道它有什么问题。感谢。
答案 0 :(得分:4)
PATH
是一个特殊的环境变量,shell用于查找可执行文件。您已将PATH更改为指向test.jar,因此现在shell无法找到java
。
将您的变量称为其他内容。
示例:
LIB_PATH="$(pwd)/test.jar"
java -jar ${LIB_PATH}
答案 1 :(得分:1)
$(PWD)中的值取决于调用脚本的目录(打印工作目录)。如果从另一个目录调用脚本,而不是jar文件所在的目录,则会得到错误的路径。并且您更改了SHELL的搜索路径,这将阻止shell找到任何其他二进制文件,例如的java。
答案 2 :(得分:1)
PATH是系统保留变量,用于定义系统查找可执行文件的方式(在您的情况下为java)。因此,您不应在代码中将其用作test.jar的变量。
在我看来,你的代码应该是这样的:
#!/bin/sh
PROGPATH='/path/to/your/test.jar'
JAVAEXEC=`which java`
JAVAPARAMS='-j'
GLOBALPATH="$JAVAEXEC $JAVAPARAMS $PROGPATH"
echo $GLOBALPATH