Я пытаюсь использовать 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 ответа
Нашел ответ здесь: Обнаружение ОС из сценария bash (с использованием $OSTYPE)
PATHSEP=":"
if [[ $OSTYPE == "cygwin" ]] ; then
PATHSEP=";"
fi
MAVEN_OPTS="-Xbootclasspath/a:test/resources${PATHSEP}live/resources"
Вы можете использовать uname(1)
, чтобы проверить, используете ли вы Cygwin, например :
if uname | grep -iq cygwin; then
# use ; for path separator
else
# use : for path separator
fi
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.
if echo "${OSTYPE}" | egrep -iq '^(cygwin|msys)'