Обычно uname
с его различными опциями сообщит вам, в какой среде вы работаете:
pax> uname -a
CYGWIN_NT-5.1 IBM-L3F3936 1.5.25(0.156/4/2) 2008-06-12 19:34 i686 Cygwin
pax> uname -s
CYGWIN_NT-5.1
И, согласно очень полезному schot
(в комментариях), uname -s
дает Darwin
для OSX и Linux
для Linux, в то время как мой Cygwin дает CYGWIN_NT-5.1
. Но вам, возможно, придется поэкспериментировать с разными версиями.
Таким образом, код bash
для такой проверки будет выглядеть следующим образом:
unameOut="$(uname -s)"
case "${unameOut}" in
Linux*) machine=Linux;;
Darwin*) machine=Mac;;
CYGWIN*) machine=Cygwin;;
MINGW*) machine=MinGw;;
*) machine="UNKNOWN:${unameOut}"
esac
echo ${machine}
Обратите внимание, что я предполагаю, что вы на самом деле запускаете в CygWin (оболочка bash
), поэтому пути уже должны быть правильно настроены. Как отмечает один из комментаторов, вы можете запустить программу bash
, передавая скрипт, из самого cmd
, и это может привести к тому, что пути не будут установлены по мере необходимости.
Если вы делаете это, вы несете ответственность за то, чтобы были вызваны правильные исполняемые файлы (например, CygWin), возможно, путем предварительного изменения пути или полного указания местоположений исполняемых файлов (например, /c/cygwin/bin/uname
).