Czy nadal istnieją systemy z plikiem binarnym / bin / sh?

24

/bin/sh, powłoka Bourne'a utworzona w 1977 roku, była domyślną powłoką dla systemów uniksowych.

Obecnie plik ten nadal istnieje, ale głównie jako symboliczne łącze do domyślnej powłoki zgodnej z POSIX zainstalowanej w systemie:

  • na RHEL / CentOS wskazuje na /bin/bashpowłokę Bourne Again
  • w systemie Ubuntu Linux wskazuje na /bin/dashpowłokę Debian Almquist
  • na Debianie wskazuje na /bin/dash(6.0 i później; starsze wersje Debiana miały na to uwagę /bin/bash)

Co mnie ciekawi: Czy istnieje system Unix lub Linux distro, że nadal dostarcza binarny dla /bin/sh?

dr01
źródło
Zobacz także: inulm.de/~mascheck/various/shells
ninjalj
1
MacOS ma. Może liczy się to jako FreeBSD.
DisplayName
1
buildroot dla wbudowanych systemów Linux z małą ilością pamięci często używa zwykłego / bin / sh (dowiązanie symboliczne do busybox). Nie jestem pewien, czy chcesz, aby liczyło się to jako system z plikiem binarnym / bin / sh.
Jürgen Schwietering,

Odpowiedzi:

30

/bin/sh nie zawsze jest dowiązaniem symbolicznym

NetBSD to jeden system, w którym /bin/shnie ma dowiązania symbolicznego. Domyślna instalacja obejmuje trzy powłoki: powłokę Korn, powłokę C i zmodyfikowaną powłokę Almquist. Spośród nich ten ostatni jest instalowany tylko jako /bin/sh.

Interix (drugi podsystem POSIX dla Windows NT) nie ma /bin/shjako dowiązanie symboliczne. Pojedynczy plik binarny powłoki MirBSD Korn jest połączony dwukrotnie jako /bin/shi /bin/mksh.

FreeBSD i jego pochodna TrueOS (wcześniej PC-BSD) mają powłokę TENEX C zarówno jako, jak /bin/cshi /bin/tcshpowłokę Almquist jako (tylko) /bin/sh. Tam też nie ma dowiązania symbolicznego.

OpenBSD do (oryginalnego) C zbiornika, jak /bin/cshi PD Korn połączone trzykrotnie jak /bin/sh, /bin/kshi /bin/rksh. Również brak dowiązania symbolicznego.

JdeBP
źródło
4
Jest też wiele do powiedzenia na temat OpenSolaris i Schillix.
JdeBP,
Byłbym zadowolony, gdybyś miał rację. Bez obaw. @schily jest okazjonalnym współpracownikiem Stack Exchange. Może xe wypełni Schillix i OpenSolarisa.
JdeBP,
Nie rozumiem, dlaczego dowiązanie symboliczne jest tak ważne. Jeśli w /binkatalogu, który wykonuję ln ksh sh, jest hardlinkwywołane sh, to nie jest dowiązanie symboliczne. Czy to jest shplik binarny?
sorontar,
Uważam, że to, co jest zamierzone z jakimś plikiem binarnym umieszczonym lub dowiązanym w „/ bin / sh”, ma znaczenie. Wszystkie systemy AFAIK mają /bin/sh. Żaden AFAIK nie jest dostarczany ze starym ATT sh. Jako przykład, myślnik w systemach Debian ma być tak blisko jak to jest możliwe , aby stary /bin/sh.
sorontar,
Kwestionujesz przesłankę pytania . Taki komentarz jest źle ustawiony w stosunku do odpowiedzi.
JdeBP,
14

Solaris 10 nadal ma starszą wersję binarną powłoki Bourne'a /bin/sh, i zdecydowanie nie jest to powłoka kompatybilna z POSIX.

Mamy nadzieję, że Solaris 11 złamał tę irytującą tradycję, podając ksh93jako /bin/sh.

jlliagre
źródło
4

To pudełko OSX ma / bin / sh jako:

$ 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
źródło
2
Co ciekawe, oba te pliki zgłaszają na moim laptopie GNU bash 3.2.57 (1), ale różnią się o kilka kilobajtów (632672 bajtów dla / bin / sh w porównaniu do 628496 bajtów dla / bin / bash).
Gaurav