Gibt es noch Systeme mit einer / bin / sh-Binärdatei?

24

/bin/sh, die 1977 erstellte Bourne-Shell , war früher die Standard-Shell für Unix-Systeme.

Heutzutage existiert diese Datei immer noch, meistens jedoch nur als symbolische Verknüpfung mit der auf dem System installierten POSIX-kompatiblen Standard-Shell:

  • Auf RHEL / CentOS verweist es auf /bin/bashdie Bourne Again-Shell
  • Unter Ubuntu Linux zeigt es auf /bin/dashdie Debian Almquist-Shell
  • unter Debian zeigt es auf /bin/dash(6.0 und höher; ältere Debian-Versionen zeigten es auf /bin/bash)

Das machte mich neugierig: Gibt es ein Unix - System oder Linux - Distribution, dass immer noch ein bietet binäre für /bin/sh?

dr01
quelle
1
macOS macht es. Vielleicht zählt das als FreeBSD.
DisplayName
1
Buildroot für eingebettete Linux-Systeme mit geringem Speicherbedarf verwendet häufig nur ein einfaches / bin / sh (Symlink in die Busybox). Ich bin mir nicht sicher, ob dies als System mit einer / bin / sh-Binärdatei gelten soll.
Jürgen Schwietering

Antworten:

30

/bin/sh ist nicht immer ein symlink

NetBSD ist ein System, auf dem /bin/shes keinen Symlink gibt. Die Standardinstallation umfasst drei Shells: die Korn-Shell, die C-Shell und eine modifizierte Almquist-Shell. Von diesen wird letztere nur als installiert /bin/sh.

Interix (das zweite POSIX-Subsystem für Windows NT) hat keinen /bin/shSymlink. Eine einzelne Binärdatei der MirBSD-Korn-Shell ist doppelt als /bin/shund verknüpft /bin/mksh.

FreeBSD und sein Derivat TrueOS (ehemals PC-BSD) haben die TENEX C-Shell als /bin/cshund /bin/tcshund die Almquist-Shell als (nur) /bin/sh. Auch dort kein Symlink.

OpenBSD hat die (original) C Shell als /bin/cshund die Korn - Shell PD verbunden dreimal so /bin/sh, /bin/ksh, und /bin/rksh. Auch kein Symlink.

JdeBP
quelle
4
Auch zu OpenSolaris und Schillix gibt es einiges zu sagen.
JdeBP
Ich wäre sehr zufrieden gewesen, wenn Sie die Punkte gehabt hätten. Keine Bange. @schily ist ein gelegentlicher Beitrag von Stack Exchange. Vielleicht füllt xe Schillix und OpenSolaris aus.
JdeBP
Ich verstehe nicht, warum ein Symlink so wichtig ist. Wenn es in dem von /binmir verwendeten Verzeichnis ln ksh sheinen hardlinkangerufenen gibt sh, handelt es sich nicht um einen Symlink. Ist es eine shBinärdatei?
Sorontar
Ich glaube, dass es darauf ankommt, was mit einer in '/ bin / sh' platzierten oder verknüpften Binärdatei gemeint ist. Alle Systeme AFAIK haben eine /bin/sh. Keine AFAIK wird mit einem alten ATT-Schiff geliefert. Zum Beispiel soll Dash in Debian-Systemen so nah wie möglich an einem alten sein /bin/sh.
Sorontar
Sie stellen die Prämisse der Frage in Frage . Ein solcher Kommentar steht einer Antwort falsch gegenüber.
JdeBP
14

Solaris 10 hat immer noch die alte Bourne-Shell-Binärdatei als /bin/sh, und dies ist definitiv keine POSIX-kompatible Shell.

Hoffentlich hat Solaris 11 diese nervige Tradition durch Bereitstellung von ksh93as gebrochen /bin/sh.

jlliagre
quelle
4

Diese OSX-Box hat / bin / sh als:

$ 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...
Dewi Morgan
quelle
2
Interessanterweise handelt es sich bei beiden Dateien um GNU bash 3.2.57 (1) -Release auf meinem Laptop, sie unterscheiden sich jedoch um einige Kilobyte (632672 Bytes für / bin / sh gegenüber 628496 Bytes für / bin / bash).
Gaurav