/bin/sh并不总是符号链接

/bin/sh并不总是符号链接

/bin/sh, 这伯恩壳创建于 1977 年,曾经是 Unix 系统的默认 shell。

现在这个文件仍然存在,但主要只是作为系统上安装的默认 POSIX 兼容 shell 的符号链接:

  • 在 RHEL/CentOS 上,它指向/bin/bashBourne Again shell
  • 在 Ubuntu Linux 上,它指向/bin/dashDebian Almquist shell
  • 在 Debian 上它指向/bin/dash(6.0 及更高版本;较早的 Debian 版本它指向/bin/bash

这让我很好奇:是否有一个 Unix 系统或 Linux 发行版仍然提供二进制为了/bin/sh

答案1

/bin/sh并不总是符号链接

/bin/shNetBSD 是一种没有符号链接的系统。默认安装包括三个 shell:Korn shell、C shell 和修改后的 Almquist shell。其中,后者仅安装为/bin/sh.

Interix(Windows NT 的第二个 POSIX 子系统)没有/bin/sh符号链接。 MirBSD Korn shell 的单个二进制文件作为 和 链接/bin/sh两次/bin/mksh

FreeBSD 及其衍生产品 TrueOS(以前称为 PC-BSD)的 TENEX C shell 为 和/bin/csh/bin/tcshAlmquist shell 为(仅)/bin/sh。那里也没有符号链接。

OpenBSD 的(原始)C shell 为/bin/csh,PD Korn shell 被三次链接为/bin/sh/bin/ksh、 和/bin/rksh。也没有符号链接。

答案2

Solaris 10 仍然保留旧版 Bourne shell 二进制文件 as /bin/sh,这绝对是不是POSIX 兼容 shell。

希望 Solaris 11 通过提供ksh93as打破了这个恼人的传统/bin/sh

答案3

这个 OSX 盒子的 /bin/sh 为:

$ ls -alF /bin/sh
-r-xr-xr-x  1 root  wheel  632672 May  5  2016 /bin/sh*
$ uname -a
Darwin AUS-LM-000421.local 15.6.0 Darwin Kernel Vers...

相关内容