1

我有一个依赖于$OSTYPE变量值的旧脚本。该脚本所期望的是,在 Solaris 上该值为“SunOS”,而在 AIX 上为“AIX”。对于 Linux,它会根据大写值以“LINUX”开头的正则表达式检查变量。

我尝试从 Jenkins 运行此脚本,发现值不同:Solaris 返回“solaris2.11”,而 AIX 返回“aix7.1.0.0”。我echo $OSTYPE在 Jenkins 运行脚本的完全相同的服务器上运行命令,而我得到的是“SunOS”/“AIX”。

所以我的主要问题是:这种差异的根源是什么(系统如何形成这个变量的值,以及为什么 Jenkins 的值与从 bash 中运行的 echo 不同)。一个附带的问题是哪种是可靠的使用方式$OSTYPE

4

2 回答 2

4

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

例如,如果您使用bash,您将获得OSTYPE变量的一个值 in zsh,其他值和 in sh,您可能不会获得任何值本身。

请参阅下面使用bash和的区别zsh

重击

$ echo $OSTYPE
  darwin18

zsh

% echo $OSTYPE
  darwin18.0

jenkins因此,当您获得不同的值时,您可能需要检查 shell 使用的是什么OSTYPE

于 2019-12-05T19:10:45.847 回答
3

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

uname

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

uname -a
于 2019-12-05T19:12:02.137 回答