5

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

我如何确定我在这些操作系统中的哪一个?我不需要确切的版本,我只需要知道我是否在 windows、linux、solaris 上......

4

3 回答 3

4

有一个标准的 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

这将提供版本信息

于 2013-05-03T09:47:37.603 回答
0

我会看看的输出

uname -a

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

或者更具体

uname -s

对于 Windows,您的意思是 cygwin 之类的吗?

于 2013-05-03T09:47:21.157 回答
0

bash 有一个名为$OSTYPE. 键入 echo$OSTYPE以查看:

echo "$OSTYPE"
// linux-gnu

bash 手册页

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


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

Linux 上的示例

uname
// Linux
于 2013-05-03T09:47:21.237 回答