나는 데비안 코드명을 인쇄하여 파일로 다시 에코할 수 있는 스크립트를 작성하려고 합니다 sources.list
.
나는 이 스크립트를 모든 데비안 버전에서 작동시키려고 노력하고 있으므로 릴리스 코드에 대한 bash 변수를 설정하고 싶습니다. 이것은 하기 쉽습니다 lsb_release -c
. 그러나 배포 이미지에는 기본적으로 -가 포함되어 있지 않으며 이를 수정하려면 이 스크립트가 필요하므로 설치 lsb_release
옵션이 아닙니다 .sources.list
lsb-release
apt-get
버전 번호와 시스템에 대한 기타 정보를 얻을 수 있는 다양한 방법을 찾았지만 코드명을 얻을 수 있는 믿을 만한 장소를 찾을 수 없습니다.
(저는 이것을 테스트하기 위해 Debian Squeeze를 사용하고 있습니다.)
답변1
당신은 그것을 사용할 수 있습니다 /etc/os-release
:
(
. /etc/os-release
printf '%s\n' "$VERSION"
)
7 (wheezy)
답변2
함께 제공되지 않는 데비안 배포판 /etc/os-release
(예: Squeeze)의 경우 다음 "해킹"을 사용할 수 있습니다. 해당 이름이 포함된 tzdata
함수 (1) 를 제공하는 패키지를 활용합니다 .
$ dpkg --status tzdata
Package: tzdata
...
Provides: tzdata-squeeze
따라서 사후 처리하여 함수 이름의 해당 부분을 추출할 수 있습니다.
dpkg --status tzdata|grep Provides|cut -f2 -d'-'
또는 더 적은 수의 파이프를 사용하십시오.
dpkg --status tzdata|awk -F'[:-]' '$1=="Provides"{print $NF}'
(1) 그러나 이것은 RedHat 용어입니다.
답변3
에서 Debian 배포판의 코드명을 얻을 수 있습니다 /etc/os-release
. 현재 환경에 영향을 주지 않기 위해 이 파일을 구문 분석하는 대신 새 환경에 넣고 echo
새 환경에서 명령을 실행할 수 있습니다.
env -i bash -c '. /etc/os-release; echo $VERSION_CODENAME'
그것을 파괴:
env
: 새 환경에서 명령을 실행합니다.-i
: 기존 환경에서 환경 변수를 상속하지 않습니다.bash
: bash를 실행하면 os-release 파일을 가져오고 echo 명령을 실행할 수 있는 쉘이 생깁니다.-c
:bash
대화형 쉘을 시작하는 대신 명령을 실행하라고 지시합니다.. /etc/os-release
:os-release
새로운 환경에 콘텐츠를 공급합니다.os-release
새 환경에서 이러한 환경 변수를 설정하는 환경 변수를 설정하는 몇 줄이 포함되어 있습니다.;
: 명령을 분리하고 다음 명령을 실행합니다.echo $VERSION_CODENAME
: 파일 설정의 코드명을 에코합니다os-release
.
답변4
시스템의 경우:
hostnamectl | grep "Operating System"
산출:
Operating System: Debian GNU/Linux 8 (jessie)