Normalerweise, uname
mit seinen verschiedenen Optionen sagt Ihnen, in welcher Umgebung Sie arbeiten:
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
Und laut dem sehr hilfreichen schot
(in den Kommentaren), uname -s
gibt Darwin
für OSX und Linux
für Linux, während mein Cygwin eine CYGWIN_NT-5.1
. Aber vielleicht müssen Sie mit allen möglichen Versionen experimentieren.
Also die bash
Der Code für eine solche Prüfung würde in etwa so aussehen:
unameOut="$(uname -s)"
case "${unameOut}" in
Linux*) machine=Linux;;
Darwin*) machine=Mac;;
CYGWIN*) machine=Cygwin;;
MINGW*) machine=MinGw;;
*) machine="UNKNOWN:${unameOut}"
esac
echo ${machine}
Beachten Sie, dass ich hier davon ausgehe, dass Sie tatsächlich das Programm innerhalb CygWin (das bash
Shell), so dass die Pfade bereits korrekt eingerichtet sein sollten. Wie ein Kommentator anmerkt, können Sie die bash
Programm, das das Skript übergibt, von cmd
selbst, was dazu führen kann, dass die Pfade nicht wie erforderlich eingerichtet werden.
Wenn Sie son Dabei müssen Sie sicherstellen, dass die richtigen ausführbaren Dateien (d.h. die CygWin-Dateien) aufgerufen werden, indem Sie den Pfad vorher ändern oder die Speicherorte der ausführbaren Dateien vollständig angeben (z.B., /c/cygwin/bin/uname
).