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?




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.


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.


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.