我在一个环境中工作,我们正在缓慢地将机器从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
在modulefile中查找以下代码:
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 {
...
}
这似乎可以满足我的要求,但我希望可以做些更短的事情。
那么,在bash脚本中从RHEL6告诉RHEL5的最简单方法是什么?
理想情况下,它应该在不同的主要版本中均具有较强的鲁棒性,但可以容忍次要发行版本中的变化。
git
Bash模块,则在调用它之前检查它是否存在。当/如果稍后出现,您的检查结果会更改,因此突然之间,该功能开始工作,而无需任何额外的努力。
lsb_release -r
还包含其他文本,例如Release: 5.8
。正如Dennis Kaarsemaker解释的那样,如果您lsb_release -rs
改用它,您只会得到数字。
lsb_release
工作?(-r
应该只给您数字;也-a
请尝试查看所有可用的信息)。如果是这样,那也是交叉销售商。