bashrc は Linux ディストリビューションに応じて別の bashrc を呼び出します。

bashrc は Linux ディストリビューションに応じて別の bashrc を呼び出します。

bashrcファイルを読み取り、使用するソフトウェアの一部をロードするシステムにログインします。

ログインしたLinuxシステムに基づいて指定されたbashrcファイルをロードしたいと思います。

特に、centOS 6システムにログインするとcentos6 bashrcをロードしようとします。

cat /etc/*-release
CentOS release 6.4 (Final)
LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
CentOS release 6.4 (Final)
CentOS release 6.4 (Final)

centOS 5.7システムにログインしたら、centOS 5.7 bashrcをロードしたいと思います。

cat /etc/*-release
CentOS release 5.7 (Final)

私のホームディレクトリに3つのbashrcファイルを置くことを検討しています。

.bashrcにはif条件が含まれているので、centOS6にログインしていることがわかったときに実行されます。

source ~/.bashrc.centos6

centOS5.7にログインすると実行されるelseもあります。

source ~/.bashrc.centos5

だから私の.bashrcコードは次のようになりたいです。

if cat /etc/*-release == "CentOs release 6.4"
   source ~/.bashrc.centos6
elif cat /etc/*-release == "CentOs release 5.7"
   source ~/.bashrc.centos5

私はbashスクリプトに最初に触れたので、これを行う方法か、それが私の目標を達成するための最良の方法であるかわかりません。

ベストアンサー1

次のコマンドを使用しますlsb_release(しなければならないほとんどのディストリビューションでは、デフォルトで:

shopt -s nocasematch

if [ -x "$(which lsb_release)" ]; then
  case "$(lsb_release -si)" in
    *centos*)
      case "$(lsb_release -sr)" in
        5.7*)
          source ~/.bashrc.centos5.7
          ;;
        5*)
          # source something for any other version 5 minor release
          ;;
        6*)
          source ~/.bashrc.centos6
          ;;
      esac
    ;;
  esac
fi

shopt -u nocasematch

lsb_release -siとの正確な出力によって異なりますlsb_release -sr。必要に応じてケースを追加できます。

おすすめ記事