Shell脚本:如何将绝对路径放入命令?

时间:2012-01-09 08:27:25

标签: java shell

我试图通过shell脚本执行我的java程序,所以我写道:

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

它完美无缺,但当我转向下面的代码时:

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

然后我收到一个错误:“Run.sh:3:java:not found” (在Ubuntu上运行)

我对shell脚本的经验很少,所以请让我知道它有什么问题。感谢。

3 个答案:

答案 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