【发布时间】:2020-03-30 18:20:10
【问题描述】:
我有一个依赖于$OSTYPE 变量值的旧脚本。该脚本所期望的是,在 Solaris 上该值为“SunOS”,而在 AIX 上为“AIX”。对于 Linux,它会根据大写值以“LINUX”开头的正则表达式检查变量。
我尝试从 Jenkins 运行此脚本,发现值不同:Solaris 返回“solaris2.11”,而 AIX 返回“aix7.1.0.0”。我在 Jenkins 运行脚本的完全相同的服务器上运行 echo $OSTYPE 命令,而我得到的是“SunOS”/“AIX”。
所以我的主要问题是:这种差异的根源是什么(系统如何形成这个变量的值,为什么 Jenkins 的值与从 bash 中运行的 echo 不同)。一个附带的问题是使用$OSTYPE 的可靠方式。
【问题讨论】:
-
这个变量是由 Bash 设置的。不在一个我可以检查它的历史以查看它是否改变以及何时改变的地方。
-
@tripleee 我尝试从 bash、sh 和 Solaris 服务器上可用的其他 shell 运行
echo $OSTYPE:一切都与“SunOS”相呼应。 Solaris 中的 Groovy 使用sh命令(它是一个 'sh' shell 调用吗?)我很好奇 Jenkins 是从哪里获取这些值的。 -
更新:zsh 返回“solaris2.11”,但在 AIX 上仍返回“aix”。
标签: bash jenkins os-detection