有没有办法使用Cygwin来运行shell脚本并为java命令使用正确的路径分隔符

时间:2009-06-01 20:38:37

标签: java bash unix shell cygwin

我正在尝试使用Cygwin来测试将在Linux环境中运行的Java应用程序的启动脚本。

当我指定一个boothclasspath或Classpath时,我需要使用特定于操作系统的路径分隔符“;”用于Windows,“:”用于Linux。发生这种情况是因为Java仍然是本机Windows应用程序并使用本机OS路径分隔符(Cygwin List Path Seperator

shell脚本中是否有任何方法可以检测我正在使用的操作系统(或者如果我在CYGWIN中运行),并指定正确的路径分隔符。

我正在尝试设置以下内容:

MAVEN_OPTS="-Xbootclasspath/a:test/resources:live/resources"

在Windows上,它需要是:     MAVEN_OPTS = “ - Xbootclasspath / A:测试/资源;活/资源”

2 个答案:

答案 0 :(得分:5)

在这里找到答案:Detect OS from a bash script (Using $OSTYPE)

PATHSEP=":" 
if [[ $OSTYPE == "cygwin" ]] ; then
PATHSEP=";" 
fi

MAVEN_OPTS="-Xbootclasspath/a:test/resources${PATHSEP}live/resources"

答案 1 :(得分:4)

您可以使用uname(1)来测试您是否正在运行Cygwin,例如:

if uname | grep -iq cygwin; then
    # use ; for path separator
else
    # use : for path separator
fi