Linuxを扱う中で、「このシステムはどのOS?」「どのディストリビューションの何バージョン?」と確認したくなる場面は多くあります。特に複数のサーバーを管理していたり、アプリの対応OSを調べるときには、正確なOS情報が不可欠です。
そんなときに便利なのが、cat /etc/os-release
というシンプルなコマンドです。このコマンドを使えば、インストールされているLinuxディストリビューションの詳細な情報を一目で確認することができます。この記事では、「cat /etc/os-release」の使い方や表示される情報の意味、他の類似コマンドとの違いなどをわかりやすく解説します。
cat /etc/os-releaseとは?
cat /etc/os-release
は、Linuxディストリビューションの種類やバージョンなど、OSに関する基本的な情報を表示するためのコマンドです。
このコマンドはLinuxの多くのディストリビューション(Ubuntu、Debian、CentOS、Rocky Linuxなど)で標準的に利用できます。
/etc/os-release
ファイルは、Linux Standard Base(LSB)に準拠した形式で記述されており、OSのIDやバージョン、名前などが定義されています。
cat /etc/os-release
上記のコマンドを実行すると、次のような出力が得られます。
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
各項目の意味を詳しく解説
出力される情報は、様々なスクリプトやアプリケーションがシステムを判別する際にも使われています。それぞれの項目を見てみましょう。
NAME
OSの正式名称です。たとえば Ubuntu
や CentOS Stream
などが表示されます。
VERSION
OSのバージョンを示します。LTS(Long Term Support)などの記述も含まれます。
ID
OSの識別子です。小文字で短く書かれていることが多く、スクリプトなどで機械的に使われます。
ID_LIKE
ベースになっているディストリビューションの系統を示します。たとえば ubuntu
は debian
ベースのため ID_LIKE=debian
と表示されます。
PRETTY_NAME
読みやすいよう整えられたOS名とバージョン。ユーザー向け表示に使われることが多いです。
VERSION_ID
バージョン番号のみを示します。スクリプトで特定のバージョンかどうかをチェックするときに便利です。
HOME_URL、SUPPORT_URL、BUG_REPORT_URL
公式サイトやサポート情報、バグ報告用のURLです。バージョンごとに異なるリンク先となることもあります。
なぜ /etc/os-release を使うのか?
LinuxにはOS情報を表示するための方法がいくつかありますが、その中でも/etc/os-release
が使われる理由は以下の通りです。
- ほとんどのディストリビューションで利用可能(互換性が高い)
- 構造化された形式で解析しやすい
- スクリプトや自動化のツールと相性がよい
- 他の方法に比べて簡潔で確実
たとえば、uname -a
やlsb_release -a
などもありますが、uname
ではカーネル情報しか出ず、lsb_release
は一部の環境にしか存在しないこともあります。
実行例:ディストリビューションの種類を自動で判別するシェルスクリプト
以下は、/etc/os-release
を読み取って、実行中のOSに応じた処理を行う簡単なシェルスクリプトの例です。
#!/bin/bash
source /etc/os-release
echo "現在のOSは $PRETTY_NAME です"
if [[ "$ID" == "ubuntu" ]]; then
echo "Ubuntu用の処理を実行します"
elif [[ "$ID" == "centos" || "$ID" == "rhel" ]]; then
echo "RedHat系の処理を実行します"
else
echo "その他のLinuxディストリビューションです"
fi
このように、OSの識別情報をスクリプト内で活用することも可能です。
/etc/os-releaseがない場合は?
一部の古いLinux環境や特殊なミニマル環境では、/etc/os-release
ファイルが存在しない場合もあります。そういった場合には、次のような代替手段があります。
lsb_release -a
(Debian系でよく使われます)cat /etc/issue
uname -a
ただし、これらの方法では正確なバージョンやディストリビューション名が取得できないこともあるため、/etc/os-release
が最も信頼できる情報源と言えます。
よくあるトラブルと注意点
- ファイルが存在しない場合:環境によっては
os-release
が存在しないため、lsb-release
パッケージをインストールして代替することも検討しましょう。 - 内容がカスタマイズされている場合:一部のディストリビューションでは独自にこのファイルの内容を書き換えているケースがあります。
- Dockerなどのコンテナ内ではベースイメージの情報しか出ない:実際のホストOSとは異なる情報になることもあります。
まとめ
cat /etc/os-release
は、Linuxのディストリビューションやバージョンを確認するための非常に便利なコマンドです。システム管理やスクリプト開発の現場では、OSの種類を判断する場面が多くありますが、この1コマンドで多くの情報が得られるのは大きなメリットです。
特にクロスディストリビューション対応のスクリプトを書くときや、環境情報をログとして記録する際には必須と言ってよいでしょう。今後のLinux操作において、ぜひ活用してみてください。