2013-05-03 74 views
4

我需要爲每個系統製作不同的腳本。今天,即使在微軟窗口,mac,linux,hp-ux,solaris等上也可以運行bash ...如何識別bash腳本中的哪個操作系統

如何確定我正在使用哪些操作系統?我不需要確切的版本,我只需要知道,如果我在Windows,Linux和Solaris ...

+0

是非常有可能的是一樣的,但我不會刪除這一點,只是因爲我想有些用戶會搜索什麼,我問,我在谷歌上搜索這個並找不到鏈接的答案 – Petr 2013-05-03 11:52:02

回答

2

有一個標準的外殼命令「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 

這會給版本信息

+0

@ChetterHummin這篇文章有什麼問題?它*只是正確*。在您的終端輸入'uname'查看 – hek2mgl 2013-05-03 10:13:21

+0

@ChetterHummin添加了大量附加信息 – Vorsprung 2013-05-03 11:04:31

+0

@Vorsprung謝謝 – 2013-05-03 15:01:06

0

我會看看

uname -a 

輸出和尋找特定字符串,這可以幫助您識別系統。

或多個特定

uname -s 

在Windows中,你的意思是這樣的cygwin?

0

bash有一個叫做$OSTYPE的全局變量。鍵入回聲$OSTYPE看到:

echo "$OSTYPE" 
// linux-gnu 

bash man page

OSTYPE自動設置爲描述了正在運行bash的操作系統的字符串。默認值是系統相關的。


一種替代方法是使用uname命令(不帶任何參數)或uname -s它所相同uname默認爲-s。在Linux

uname 
// Linux 
+0

-o在HP-UX上未作爲示例知道 – Devolus 2013-05-03 09:50:51

+0

從未登錄過此類框。我應該這樣做:)你會建議什麼? '-s'?這是我以前的。不知道 – hek2mgl 2013-05-03 09:52:07

+0

是的,-s給你的操作系統。樸素的'uname'應該是'uname -s'的捷徑,但我想這並不會讓人覺得很明顯。 – Devolus 2013-05-03 09:54:08

相關問題