Esistono ancora sistemi con un binario / bin / sh?


24

/bin/sh, la shell Bourne creata nel 1977, era la shell predefinita per i sistemi Unix.

Oggi questo file esiste ancora, ma principalmente come collegamento simbolico alla shell compatibile con POSIX predefinita installata sul sistema:

  • su RHEL / CentOS a cui punta /bin/bash, la shell Bourne Again
  • su Ubuntu Linux indica /bin/dashla shell Debian Almquist
  • su Debian punta a /bin/dash(6.0 e successive; le versioni precedenti di Debian lo puntavano /bin/bash)

Il che mi ha incuriosito: esiste un sistema Unix o una distro Linux che fornisce ancora un binario per /bin/sh?




1
macOS lo fa. Forse questo conta come FreeBSD.
DisplayName

1
buildroot per sistemi Linux incorporati con un ingombro di memoria ridotto utilizzerà spesso solo un semplice / bin / sh (collegamento simbolico in busybox). Non sono sicuro che tu voglia contare questo come sistema con un binario / bin / sh.
Jürgen Schwietering,

Risposte:


30

/bin/sh non è sempre un collegamento simbolico

NetBSD è un sistema in cui /bin/shnon è un collegamento simbolico. L'installazione predefinita include tre shell: la shell Korn, la shell C e una shell Almquist modificata. Di questi, quest'ultimo è installato solo come /bin/sh.

Interix (il secondo sottosistema POSIX per Windows NT) non ha /bin/shun collegamento simbolico. Un singolo binario della shell MirBSD Korn è collegato due volte come /bin/she /bin/mksh.

FreeBSD e il suo derivato TrueOS (precedentemente PC-BSD) hanno la shell TENEX C come entrambe /bin/cshe /bin/tcsh, e la shell Almquist come (solo) /bin/sh. Nessun collegamento simbolico lì, neanche.

OpenBSD ha la shell C (originale) come /bin/cshe shell Korn PD collegato tre volte più /bin/sh, /bin/kshe /bin/rksh. Inoltre nessun collegamento simbolico.


4
C'è anche qualcosa da dire su OpenSolaris e Schillix.
JdeBP

Sarei stato abbastanza contento per te avere i punti. Nessun problema. @schily è un collaboratore occasionale di Stack Exchange. Forse xe riempirà Schillix e OpenSolaris.
JdeBP

Non riesco a capire perché un link simbolico sia così importante. Se nella /bindirectory che faccio ln ksh sh, c'è un hardlinkchiamato sh, non è un collegamento simbolico. È un shbinario?
sorontar

Credo che ciò che conta con un binario collocato o collegato simbolicamente in '/ bin / sh' sia importante. Tutti i sistemi AFAIK hanno a /bin/sh. Nessuno AFAIK viene spedito con un vecchio shi ATT. Ad esempio, il trattino nei sistemi debian deve essere il più vicino possibile a un vecchio /bin/sh.
sorontar

Stai contestando la premessa della domanda . Tale commento è errato rispetto a una risposta.
JdeBP,

14

Solaris 10 presenta ancora l'eredità Bourne shell binaria /bin/sh, e questo è sicuramente non una shell compatibile POSIX.

Speriamo che Solaris 11 abbia rotto questa fastidiosa tradizione fornendo ksh93as /bin/sh.


4

Questa casella OSX ha / bin / sh come:

$ 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
È interessante notare che entrambi questi file indicano che GNU bash 3.2.57 (1) viene rilasciato sul mio laptop, ma differiscono di alcuni kilobyte (632672 byte per / bin / sh contro 628496 byte per / bin / bash).
Gaurav,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.