私はDebianコード名を印刷してファイルに再エコーできるスクリプトを書こうとしていますsources.list
。
私はこのスクリプトをすべてのDebianバージョンで動作させようとしているので、リリースコードの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
付属していない Debian ディストリビューション/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)