我试图找到如何完成这个任务的答案,但似乎找不到。 我知道在perl中可以使用以下方法查找操作系统名称:
$^O
然而在Linux和Solaris中,无论您使用何种操作系统版本,它都只会返回Solaris或Linux。我希望它能显示为Solaris10或Solaris11。有没有办法做到这一点?我知道如果您输入:
uname -r
你可以获取版本号(例如在Solaris中为5.10)。你有什么想法吗?如何实现?
谢谢 =)
POSIX
模块提供了 uname 调用,因此:use POSIX qw(uname);
my @uname = uname();
print $uname[0] . " " . $uname[2];
Config
结果来自)的信息。natsu ~> lsb_release -r
Release: 12.04
natsu ~> lsb_release -i
Distributor ID: Ubuntu
这个信息存储在/etc/lsb-release
文件中。
对于Solaris而言,版本信息存放在/etc/release
文件中。该文件的第一行包含操作系统的名称,例如:Solaris 10 9/10
。此文件有多行内容,是一个自由格式文本字段。
use Config;
print "$_\n" for @Config{qw(myuname osname osvers)};
Config模块包含了在Perl构建时Configure程序所提供的所有信息。
myuname
如果可用,则为uname -a的输出,否则为主机名。整个字符串都被转换为小写,并删除斜杠和单引号。
osname
此变量包含操作系统名称(例如sunos,solaris,hpux等)。稍后设置默认值可能会有用。任何空格都将替换为下划线。如果我们无法确定它,则设置为空字符串。
osvers
此变量包含操作系统版本(例如4.1.3,5.2等)。它主要用于帮助选择适当的hints文件,但在其他地方设置默认值也可能有用。如果我们无法确定它,则设置为''。我们尝试灵活处理要保留多少版本号,例如,如果对于该软件包而言4.1.1、4.1.2和4.1.3本质上是相同的,则hints文件可能只是os_4.0或os_4.1等,而不是为每个小版本都保留单独的文件。