OS 在哪里获取 $OSTYPE 的值

Where does the OS take the value for $OSTYPE

我有一个依赖于 $OSTYPE 变量值的遗留脚本。该脚本期望的是,在 Solaris 上该值为 "SunOS",而在 AIX 上该值为 "AIX"。对于 Linux,它根据大写值以 "LINUX".

开头的正则表达式检查变量

我已经尝试 运行 Jenkins 的这个脚本,发现值不同:Solaris returns "solaris2.11" 而 AIX returns "aix7.1.0.0".我 运行 echo $OSTYPE 命令在 Jenkins 运行 脚本所在的完全相同的服务器上,我得到的是 "SunOS"/"AIX"。

所以我的主要问题是:这种差异的来源是什么(系统如何形成这个变量的值,以及为什么 Jenkins 的值不同于 echo 运行 from bash).一个附带的问题是使用 $OSTYPE.

的可靠方法是什么?

变量OSTYPE存储OSTYPE的值在shell变量中。这取决于 shell 它存储的值。

例如,如果您使用 bash,您将获得 OSTYPE 变量的一个值,在 zsh 中,一些其他值,在 sh 中,您本身可能得不到任何价值。

请参阅下面使用 bashzsh 的区别。

bash

$ echo $OSTYPE
  darwin18

zsh

% echo $OSTYPE
  darwin18.0

因此,当您获得 OSTYPE

的不同值时,您可能需要检查 shell jenkins 使用的是什么

最可靠的方法是使用命令:

uname

有不同的选择。你看到的结果只是命令uname。如果您想了解有关版本、体系结构的更多详细信息,可以使用

uname -a