命令是从shell脚本中的当前目录运行的吗?

时间:2010-07-07 21:14:10

标签: java linux bash shell scripting

在bash shell脚本中,我尝试了这两个版本:

java -jar abc.jar&

CMD="java -jar abc.jar&"
$CMD

第一个版本有效,第二个版本抱怨无法找到abc.jar。为什么呢?

2 个答案:

答案 0 :(得分:1)

命令从shell脚本中的当前目录运行。

这就是测试脚本中第一个命令工作的原因。

第二个命令可能无效,因为java中不存在${PATH}abc.jar${CLASSPATH}不在echo。您可以set +x这些环境变量或bash来调试{{1}}脚本。

答案 1 :(得分:1)

Bash(和其他人)不允许你在变量的值内进行后台处理(&)(也不允许你以那种方式或管道进行重定向)。您应该避免将命令放入变量中。有关其他信息,请参阅BashFAQ/050

您收到的实际错误消息是什么?我打赌它类似于“abc.jar& not found”(注意&符号),因为&符号被视为文件名中的一个字符。

此外,脚本的当前目录是运行的目录 - 它所在的目录。您应该明确要包含文件的目录。

java -jar /path/to/abc.jar&