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
。必要に応じてケースを追加できます。