Linux 배포 이름만 생성하는 명령

Linux 배포 이름만 생성하는 명령

여러 Linux 배포판 중 하나에 대한 필수 구성 요소 세트를 설치해야 한다고 가정해 보겠습니다. 이 경우 릴리스에 따라 설치 표현식을 전환해야 합니다.

나는 알고 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'

관련 정보