如何找出我使用的 RHEL 版本?

Mar*_*oth 15 bash rhel

我在一个环境中工作,我们正在慢慢地将机器从 Red Hat Enterprise Linux 5 过渡到 RHEL 6。

我需要我的一些脚本在 RHEL6 机器上做一些与目前在 RHEL5 机器上做的事情略有不同的事情。

实用的解决方案是在运行时检查并在 RHEL5 上运行一些命令,在 RHEL6 上运行一些命令,在两者上运行一些命令。

一个实际的例子是我们正在使用环境模块并且我.bashrc包含module load git一行,但是在 RHEL6 机器上这个命令错误:

RHEL6 system, git should be installed - not loading module
Run Code Online (Sandbox Code Playgroud)

查看模块文件,我发现以下代码:

set redhatrelease [eval exec "cat /etc/redhat-release"]
if { [regexp -nocase {release 6} $redhatrelease] } {
  puts stderr "\n\t RHEL6 system, git should be installed - not loading module\n"
} else {
  ...
}
Run Code Online (Sandbox Code Playgroud)

这似乎符合我的要求,但我希望能缩短一些时间。

那么,在 bash 脚本中告诉 RHEL5 和 RHEL6 的最简单方法是什么?

理想情况下,它应该在不同的主要版本中保持健壮,但要容忍次要版本号的变化。

Mel*_*lan 16

if grep -q -i "release 6" /etc/redhat-release
then
  echo "running RHEL 6.x"
fi
Run Code Online (Sandbox Code Playgroud)

这将是我能想到的最简单的方法。


Den*_*ker 12

您也可以使用该lsb_release命令。如果您已经确定它是 RHEL,则获取主要版本号为:

majversion=$(lsb_release -rs | cut -f1 -d.)
Run Code Online (Sandbox Code Playgroud)