代码之家  ›  专栏  ›  技术社区  ›  erotsppa

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

  •  2
  • erotsppa  · 技术社区  · 15 年前

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

    java -jar abc.jar&
    

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

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

    2 回复  |  直到 13 年前
        1
  •  1
  •   johnsyweb    15 年前

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

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

    第二个命令可能不起作用,因为 java 不在你的身边 ${PATH} abc.jar 不在你的身边 ${CLASSPATH} . 你可以 echo 这些环境变量或 set +x 调试你的 bash 脚本。

        2
  •  1
  •   Dennis Williamson    15 年前

    巴什(和其他人)不会让你做背景。( & )在变量的值内(它们也不允许您以这种方式或管道进行重定向)。您应该避免将命令放入变量中。见 BashFAQ/050 了解更多信息。

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

    另外,脚本的当前目录是它运行的目录 - 它所在的目录。您应该清楚地了解要将文件放在其中的目录。

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