如何从任何目录引用文件

时间:2014-02-20 07:51:33

标签: java shell path cygwin

我遇到以下情况。

我有一个java程序包装在一个jar文件中。如果我打电话java -jar myProgramm.jar一切正常。该文件正在从 build.xml (ant文件)中读取一些值。此文件位于myProgramm.jar所在的目录中。 在我们公司,我们将所有内容都包装在shell脚本中,以便有一种无法调用脚本的方式。

所以我的shell脚本myProgrammWrapper.sh看起来像这样:

    #!bin/bash
java -jar $(cygpath -w ~/path/to/tools/myProgramm.jar) "$@"

cygpath命令在那里,因为sh在cygwin中执行,否则将找不到路径。 “$ @”将参数传递给程序。

以下是问题:

我们的cygwin环境设置方式可以从每个目录调用myProgrammWrapper.sh。但是当我从任何随机位置调用它时,都找不到build.xml。

有没有办法在shell脚本中引用 build.xml 。它位于~/path/to/tools/

首先,我考虑将构建文件复制到当前目录,然后将其删除。这工作正常,但有一个基本缺陷。我们正在使用ant工作并拥有build.xml文件。因此,如果有人在已有build.xml文件的目录中执行myProgrammWrapper.sh。它会被覆盖。

也许这个问题可以从Java方面解决。任何想法和意见都表示赞赏。

1 个答案:

答案 0 :(得分:1)

为什么不让Bash脚本将工作目录更改为包含XML文件的位置?

尝试:

(cd $(cygpath -w ~/path/to/tools/) && java -jar $(cygpath -w ~/path/to/tools/myProgramm.jar) "$@")