Я пытаюсь использовать Cygwin для тестирования сценариев запуска для приложения Java, которое будет работать в среде Linux.

Проблема в том, что когда я указываю bootclasspath или Classpath, мне нужно использовать разделители путей ОС ";" для окон и ":" для Linux. Это происходит потому, что Java по-прежнему является собственным приложением Windows и использует собственный разделитель путей ОС (Cygwin List Разделитель путей )

Есть ли способ в сценарии оболочки определить, на какой ОС я работаю (или, возможно, работаю ли я в CYGWIN), и указать правильный разделитель пути.

Я пытаюсь установить следующее:

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

В Windows это должно быть: MAVEN_OPTS="-Xbootclasspath/a:test/resources;live/resources"

2
Dougnukem 2 Июн 2009 в 00:38

2 ответа

Нашел ответ здесь: Обнаружение ОС из сценария bash (с использованием $OSTYPE)

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

MAVEN_OPTS="-Xbootclasspath/a:test/resources${PATHSEP}live/resources"
5
Community 23 Май 2017 в 15:09
Еще лучше if echo "${OSTYPE}" | egrep -iq '^(cygwin|msys)'
 – 
smac89
5 Апр 2017 в 05:48

Вы можете использовать uname(1), чтобы проверить, используете ли вы Cygwin, например :

if uname | grep -iq cygwin; then
    # use ; for path separator
else
    # use : for path separator
fi
4
Adam Rosenfield 2 Июн 2009 в 00:41