仍然有/ bin / sh二进制文件的系统吗?


24

/bin/sh,创建于1977年的Bourne shell曾经是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
macOS可以。也许算作FreeBSD。
DisplayName

1
具有较小内存占用的嵌入式linux系统的buildroot通常仅使用普通的/ bin / sh(符号链接到busybox)。不知道您是否要将其计为/ bin / sh二进制文件的系统。
尔根·施维特林

Answers:


30

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

NetBSD是一个/bin/sh没有符号链接的系统。默认安装包括三个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外壳/bin/csh/bin/tcsh,以及Almquist外壳(仅)/bin/sh。那里也没有符号链接。

OpenBSD的具有(原始)C作为壳/bin/csh和PD Korn外壳连接的三次如/bin/sh/bin/ksh,和/bin/rksh。也没有符号链接。


4
关于OpenSolaris和Schillix也有很多话要说。
JdeBP '16

我很满足于您提出的观点。别担心。@schily是偶尔的Stack Exchange贡献者。也许xe将填充Schillix和OpenSolaris。
JdeBP '16

我不明白为什么符号链接如此重要。如果在/bin我执行的目录中ln ksh sh,有一个hardlink称为sh,则不是符号链接。它是sh二进制文件吗?
sorontar '16

我相信在“ / bin / sh”中放置或符号链接二进制文件的目的很重要。所有系统AFAIK都有一个/bin/sh。没有AFAIK附带旧的ATT sh。作为一个例子,在系统的Debian破折号意图是尽可能接近能够向旧/bin/sh
sorontar '16

您以问题的前提前提。这样的评论被错误地放在了答案上。
JdeBP '16

14

Solaris 10仍将旧版Bourne Shell二进制文件作为/bin/sh,这绝对不是 POSIX兼容的Shell。

希望Solaris 11通过提供ksh93as 打破了这种令人讨厌的传统/bin/sh


4

此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...

2
有趣的是,这两个文件均在我的笔记本电脑上报告为GNU bash 3.2.57(1)-发行版,但相差几千字节(/ bin / sh为632672字节,/ bin / bash为628496字节)。
Gaurav
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.