Existe-t-il encore des systèmes avec un binaire / bin / sh?

24

/bin/sh, le shell Bourne créé en 1977, était le shell par défaut des systèmes Unix.

De nos jours, ce fichier existe toujours mais surtout comme un lien symbolique vers le shell compatible POSIX par défaut installé sur le système:

  • sur RHEL / CentOS, il pointe vers /bin/bashle shell Bourne Again
  • sur Ubuntu Linux, il pointe vers /bin/dash, le shell Debian Almquist
  • sur Debian, il pointe vers /bin/dash(6.0 et versions ultérieures; les anciennes versions de Debian le montraient /bin/bash)

Ce qui me fait curieux: Y at - il un système Unix ou Linux distro, qui fournit encore un binaire pour /bin/sh?

dr01
la source
1
macOS le fait. Peut-être que cela compte comme FreeBSD.
DisplayName
1
buildroot pour les systèmes linux embarqués avec une faible empreinte mémoire utilise souvent juste un simple / bin / sh (lien symbolique vers busybox). Je ne sais pas si vous voulez que cela compte comme système avec un binaire / bin / sh.
Jürgen Schwietering

Réponses:

30

/bin/sh n'est pas toujours un lien symbolique

NetBSD est un système où /bin/shn'est pas un lien symbolique. L'installation par défaut comprend trois shells: le shell Korn, le shell C et un shell Almquist modifié. Parmi ceux-ci, ce dernier est installé uniquement en tant que /bin/sh.

Interix (le deuxième sous-système POSIX pour Windows NT) n'a pas /bin/shde lien symbolique. Un seul binaire du shell MirBSD Korn est lié deux fois comme /bin/shet /bin/mksh.

FreeBSD et son dérivé TrueOS (anciennement PC-BSD) ont le shell TENEX C comme les deux /bin/cshet /bin/tcsh, et le shell Almquist comme (seulement) /bin/sh. Pas de lien symbolique non plus.

OpenBSD a la coque (original) C comme /bin/cshet l'enveloppe PD Korn lié trois fois plus /bin/sh, /bin/kshet /bin/rksh. Pas de lien symbolique non plus.

JdeBP
la source
4
Il y a aussi des choses à dire sur OpenSolaris et Schillix.
JdeBP
J'aurais été très content que vous ayez eu les points. Pas de soucis. @schily est un contributeur occasionnel de Stack Exchange. Peut-être que xe remplira Schillix et OpenSolaris.
JdeBP
Je n'arrive pas à comprendre pourquoi un lien symbolique est si important. Si dans le /binrépertoire que je fais ln ksh sh, il y a un hardlinkappelé sh, ce n'est pas un lien symbolique. Est-ce un shbinaire?
sorontar
Je crois que ce qui est prévu avec un binaire placé ou lié dans '/ bin / sh' est ce qui compte. Tous les systèmes AFAIK ont un /bin/sh. Aucun AFAIK n'est livré avec un vieux ATT sh. Par exemple, le tiret dans les systèmes Debian est censé être aussi proche que possible d'un ancien /bin/sh.
sorontar
Vous contestez la prémisse de la question . Un tel commentaire est mal placé par rapport à une réponse.
JdeBP
14

Solaris 10 a toujours le binaire shell Bourne hérité /bin/sh, et ce n'est certainement pas un shell compatible POSIX.

Avec un peu de chance, Solaris 11 a brisé cette tradition ennuyeuse en fournissant ksh93as /bin/sh.

jlliagre
la source
4

Cette boîte OSX a / bin / sh comme:

$ 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
la source
2
Fait intéressant, ces deux fichiers indiquent que GNU bash 3.2.57 (1) est publié sur mon ordinateur portable, mais diffèrent de quelques kilo-octets (632672 octets pour / bin / sh vs 628496 octets pour / bin / bash).
Gaurav