ファイルシステムまたはコマンドからLinuxディストリビューション名を読む

ファイルシステムまたはコマンドからLinuxディストリビューション名を読む

一部のシステム情報を収集する必要があります。一部のディストリビューション/バージョン固有の条件に従って、実行するアクションを決定します。

例を簡単にするために、仮想関数を作成しましたmy_function_display_operating_system。これは役に立たない機能ですが、問題を解決します。

  1. 一般的なオペレーティングシステムタイプの検出(、等。 )
  2. オペレーティングシステムの一部のバージョン情報を検出する
  3. 検出分布フレンドリーな名前

3.私が最も助けが必要な場所に焦点を当てます。

ホストを表す文字列を読み取る安定した方法はありますか?ディストリビューション名?

/etc/issue私はこの情報を得ることができる他の方法や一連の方法がわからないので、以下の例を使用しています。

一つあるのは幸いです。時によって異なります。case esac答えは、必要に応じて非常に複雑なスイッチステートメントを書くことができます。

どこを見るべきかを知る必要があります。名前のせいで...


# Displays operating system.

function my_function_display_operating_system() {
  local operating_system
  case $my_global_os_type in
    OSX)
      printf -v operating_system \
                'OS X v%s (build %s)' \
                $(sw_vers -productVersion) \
                $(sw_vers -buildVersion)
      ;;
    Linux)
      local -r linux_kernel_version=$(uname -r)
      printf -v operating_system \
                'GNU/Linux (kernel %s)' \
                "$linux_kernel_version"
      if [[ -f /etc/issue ]]; then
        local -r distribution=$(cat /etc/issue | sed 's/ \\n \\l//g')
        operating_system+="\nDistribution: $distribution"
      fi
      ;;
    *)
      operating_system=Unknown
      ;;
  esac
  printf "Operating system: $operating_system\n"
}

出力例:


> my_function_display_system_information
Operating system   GNU/Linux (kernel 3.5.0-25-generic)
Distribution       Ubuntu 12.10
System memory      1 GB
Bash               v4.2.37(1)-release
Vim                VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 26 2012 16  45  54)
# ... etc ...

答え1

非常に似たアドバイスがここに提供されます。

https://superuser.com/questions/11008/how-do-i-find-out-what-version-of-linux-im-running

短い答え:

 ls /etc/*{release,version}

さまざまなディストリビューションはさまざまな形式で出力され、残念ながら単一の統合システムはありません。上記の答えは、最も一般的なファイルのいくつかをより詳細にリストしています。

関連情報