我需要为每个系统制作不同的脚本。今天,即使在微软窗口,mac,linux,hp-ux,solaris等上也可以运行bash ...如何识别bash脚本中的哪个操作系统
如何确定我正在使用哪些操作系统?我不需要确切的版本,我只需要知道,如果我在Windows,Linux和Solaris ...
我需要为每个系统制作不同的脚本。今天,即使在微软窗口,mac,linux,hp-ux,solaris等上也可以运行bash ...如何识别bash脚本中的哪个操作系统
如何确定我正在使用哪些操作系统?我不需要确切的版本,我只需要知道,如果我在Windows,Linux和Solaris ...
有一个标准的外壳命令“UNAME”返回当前平台作为字符串
要在外壳程序中使用这个典型的节可能是
#!/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
这会给版本信息
我会看看
uname -a
输出和寻找特定字符串,这可以帮助您识别系统。
或多个特定
uname -s
在Windows中,你的意思是这样的cygwin?
bash有一个叫做$OSTYPE
的全局变量。键入回声$OSTYPE
看到:
echo "$OSTYPE"
// linux-gnu
OSTYPE自动设置为描述了正在运行bash的操作系统的字符串。默认值是系统相关的。
一种替代方法是使用uname
命令(不带任何参数)或uname -s
它所相同uname
默认为-s
。在Linux
例
uname
// Linux
是非常有可能的是一样的,但我不会删除这一点,只是因为我想有些用户会搜索什么,我问,我在谷歌上搜索这个并找不到链接的答案 – Petr 2013-05-03 11:52:02