因此,有许多不同版本的 Unix:HP-UX、AIX、BSD 等。 Linux 被认为是 Unix 克隆,而不是 Unix 的实现。所有“真正的”Unices 都是原版的真正后代吗?如果不是,Linux 与 Unix 的区别是什么?
这或多或少是以下两个问题的后续问题:
我看到在 Solaris 10 (SunOS 5.10) 上,我得到以下结果:
$ type -a awk
awk is /usr/bin/awk
$ PATH="$(getconf PATH)" type -a awk
awk is /usr/xpg4/bin/awk
awk is /usr/bin/awk
$
Run Code Online (Sandbox Code Playgroud)
在 Solaris 10 上,/usr/bin/awk
不接受 POSIX 标准 Awk 语法,例如'!x[$0]++'
,但接受/usr/xpg4/bin/awk
。到目前为止已经足够好了。
但是,在 Solaris 11 上,/usr/bin/awk
甚至只有getconf PATH
. 虽然还有nawk
and oawk
is /usr/bin
,但显然没有任何地方的符号链接指向这些。
知道 Solaris 已通过 POSIX 认证,这让我感到惊讶。
如何使用可在其他 POSIX 兼容系统上运行的可移植代码在 Solaris 11 上标准地获得兼容 POSIX 的 …
在编写 shell 脚本时,为了获得尽可能多的可移植性,人们可能想要尝试并坚持使用可能已经安装在目标系统上的命令行工具。
我们可以评估特定工具,如本例所示:
是否存在默认安装中没有 awk 的 Unix 版本?
我们也可以按目标发行版进行搜索,例如:
Debian 中默认安装了哪些软件包?[...]
与这种一次搜索一个命令/发行版相比,是否有任何官方的或某种既定的命令集如果没有被授予,但至少很可能安装在任何 *nix 系统上?如果我们将其缩小到 Linux 会怎样?