Linuxディストリビューション名のみを生成するコマンド

Linuxディストリビューション名のみを生成するコマンド

いくつかのLinuxディストリビューションの1つに必要なコンポーネントセットをインストールする必要があるとします。この場合、リリースに従ってインストール式を切り替える必要があります。

私は知っておりuname -v、壊れやすい文字列表現とロジックを使用してそのコマンドの出力を確認できることを知っています。しかし、私にとって本当に必要なのは:

V=$(something-like-uname)
echo $V

"Debian"
# or
"Gentoo"
# or
"Redhat"
# or 
"Arch"
# etc.

このコマンドは何ですか? (存在するか?)

答え1

私は常にlsb_release -i最初に確認し、 /etc/os-releaseバックアップとして確認します。以下で利用可能でなければなりません。たくさん しかし、もちろん、それがどこにでもあるとは決して期待できません。それ無料デスクトップ標準 そして登場する体系的なシステム。 Slackwareでは、次のように言います。

$ cat /etc/os-release
NAME=Slackware
VERSION="14.2"
ID=slackware
VERSION_ID=14.2
PRETTY_NAME="Slackware 14.2"
ANSI_COLOR="0;34"
CPE_NAME="cpe:/o:slackware:slackware_linux:14.2"
HOME_URL="http://slackware.com/"
SUPPORT_URL="http://www.linuxquestions.org/questions/slackware-14/"
BUG_REPORT_URL="http://www.linuxquestions.org/questions/slackware-14/"

Raspbianから:

$ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

あなたの興味の分野は次のとおりですID

答え2

lsb_release -iインストールすると、好きなように動作できます。それ以外の場合は、などのファイルを確認してください/etc/redhat-release/etc/debian_version

$ lsb_release -i 
Distributor ID: Fedora

答え3

私は次を使うでしょう:

grep -Po "(?<=^ID=).+" /etc/os-release | sed 's/"//g'

関連情報