如何识别我在bash脚本中使用的操作系统

时间:2013-05-03 09:45:03

标签: bash

我需要制作每个系统行为不同的脚本。今天甚至可以在微软windows,mac,linux,hp-ux,solaris等上运行bash ......

如何确定我使用的是哪种操作系统?我不需要确切的版本,我只需要知道我是在windows,linux,solaris ......

3 个答案:

答案 0 :(得分:2)

有一个标准的shell命令“uname”,它将当前平台作为字符串返回

要在shell程序中使用它,典型的节可能是

#!/bin/sh



if [ `uname` = "Linux" ] ;
then
    echo "we are on the operating system of Linux"
fi

if [ `uname` = "FreeBSD" ] ;
then
    echo "we are on the operating system of FreeBSD"
fi

有更多具体信息,但不幸的是,它根据平台而有所不同。在许多版本的Linux(和ISTR,Solaris)上都有一个/ etc / issue文件,其中包含已安装的发行版的版本名称和编号。所以在ubuntu上

if [ -e "/etc/issue" ] ;
then
issue=`cat /etc/issue`
set -- $issue
if [ $1 = "Ubuntu" ] ;
then
    echo "we are on Ubuntu version " $2
fi
fi

这将提供版本信息

答案 1 :(得分:0)

我会查看

的输出
uname -a

并查找特定的字符串,这可以帮助您识别系统。

或更具体的

uname -s

对于Windows,你的意思是cygwin吗?

答案 2 :(得分:0)

bash有一个名为$OSTYPE的全局变量。输入echo $OSTYPE以查看:

echo "$OSTYPE"
// linux-gnu

来自bash man page

  

OSTYPE自动设置为描述正在执行bash的操作系统的字符串。默认值取决于系统。


另一种方法是使用uname命令(不带任何参数)或uname -suname相同的内容默认为-s

Linux上的示例

uname
// Linux