2016-02-19 65 views
0

想要在全新安裝發行版之後運行安裝軟件和回購的bash腳本。我有一個腳本可以用於基於debian的發行版。想添加到將從lsb_release中獲取發行版並啓動正確的安裝命令的腳本中。 lsb_release是否是正確的選擇?我假設我可以grep DISTRIB_ID並使用它來啓動腳本的下一部分。我可能會從錯誤的方向來到這裏。有什麼建議?乾杯。將lsb_release的發行版信息添加到腳本中

回答

0

雖然您可以使用lsb_release -d來提取當前安裝的分發版的描述,但lsb_release可能不會安裝在某些基於非debian的發行版中。

相反,您可以在/etc中查找以-release結尾的文件,其中包含您的操作系統信息。例如,從我的Ubuntu 15.10,下面是我:

alexander~$ cat /etc/*-release 
DISTRIB_ID=Ubuntu 
DISTRIB_RELEASE=15.10 
DISTRIB_CODENAME=wily 
DISTRIB_DESCRIPTION="Ubuntu 15.10" 
NAME="Ubuntu" 
VERSION="15.10 (Wily Werewolf)" 
ID=ubuntu 
ID_LIKE=debian 
PRETTY_NAME="Ubuntu 15.10" 
VERSION_ID="15.10" 
HOME_URL="http://www.ubuntu.com/" 
SUPPORT_URL="http://help.ubuntu.com/" 
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/" 

通知ID,其中包含您的電流分佈,並ID_LIKE,其中包含您的分發是基於發行版(在我的情況下,Ubuntu的,這是基於debian)。

cat /etc/*-release | grep "^ID=" | grep -E -o "[a-z]\w+"  # get ID value 
cat /etc/*-release | grep "^ID_LIKE=" | grep -E -o "[a-z]\w+" # get ID_LIKE value 
# If the -o option is not available for grep in your system, use awk instead 

在你的腳本,可以初始化變量上面的說明,如:

current_distro=`cat /etc/*-release | grep "^ID=" | grep -E -o "[a-z]\w+"` 
close_distro=`cat /etc/*-release | grep "^ID_LIKE=" | grep -E -o "[a-z]\w+"` 

然後你就可以判斷這個,你可以通過grepping如下提取ID和ID_LIKE的值通過在您的腳本中檢查"$current_distro""$close_distro"來執行相應的安裝命令。

+0

非常感謝。這有幫助。 ID和ID_LIKE是更好的選擇。 –

+0

不客氣。並且[os-release-operating system identification](https://www.freedesktop.org/software/systemd/man/os-release.html)對它們進行了描述,ID/ID_LIKE更適合通過腳本進行處理或使用在生成的文件名中。 – assefamaru

相關問題