Apakah masih ada sistem dengan binary / bin / sh?

24

/bin/sh, cangkang Bourne dibuat pada tahun 1977, dulunya merupakan cangkang default untuk sistem Unix.

Saat ini file ini masih ada tetapi sebagian besar hanya sebagai tautan simbolis ke shell kompatibel-POSIX default yang diinstal pada sistem:

  • pada RHEL / CentOS itu menunjuk ke /bin/bash, shell Bourne Again
  • di Ubuntu Linux itu menunjuk ke /bin/dash, shell Debian Almquist
  • pada Debian itu menunjuk ke /bin/dash(6.0 dan lebih baru; rilis Debian yang lebih lama mengarahkannya /bin/bash)

Yang membuat saya penasaran: Apakah ada sistem Unix, atau Linux distro, yang masih menyediakan biner untuk /bin/sh?

dr01
sumber
1
macOS tidak. Mungkin itu dianggap sebagai FreeBSD.
DisplayName
1
buildroot untuk sistem linux tertanam dengan jejak memori kecil sering menggunakan hanya sebuah / bin / sh (symlink ke busybox). Tidak yakin apakah Anda ingin ini dihitung sebagai sistem dengan biner / bin / sh.
Jürgen Schwietering

Jawaban:

30

/bin/sh tidak selalu merupakan symlink

NetBSD adalah satu sistem di mana /bin/shbukan symlink. Instalasi default mencakup tiga shell: shell Korn, shell C, dan shell Almquist yang dimodifikasi. Dari jumlah tersebut, yang terakhir diinstal hanya sebagai /bin/sh.

Interix (subsistem POSIX kedua untuk Windows NT) tidak memiliki /bin/shsebagai symlink. Sebuah biner tunggal dari shell MirBSD Korn dihubungkan dua kali sebagai /bin/shdan /bin/mksh.

FreeBSD dan TrueOS turunannya (sebelumnya PC-BSD) memiliki shell TENEX C sebagai keduanya /bin/cshdan /bin/tcsh, dan shell Almquist sebagai (hanya) /bin/sh. Tidak ada symlink di sana.

OpenBSD memiliki (asli) C shell sebagai /bin/cshdan PD Korn shell terkait tiga kali sebagai /bin/sh, /bin/ksh, dan /bin/rksh. Juga tidak ada symlink.

JdeBP
sumber
4
Ada hal-hal untuk dikatakan tentang OpenSolaris dan Schillix juga.
JdeBP
Saya akan cukup puas bagi Anda untuk memiliki poin. Jangan khawatir. @schily adalah kontributor Stack Exchange sesekali. Mungkin xe akan mengisi Schillix dan OpenSolaris.
JdeBP
Saya gagal memahami mengapa symlink itu penting. Jika dalam /bindirektori yang saya lakukan ln ksh sh, ada yang hardlinkdipanggil sh, itu bukan symlink. Apakah ini shbiner?
sorontar
Saya percaya bahwa apa yang dimaksudkan dengan beberapa biner ditempatkan atau disinkronkan dalam '/ bin / sh' adalah yang penting. Semua sistem memiliki AFAIK a /bin/sh. Tidak ada AFAIK yang dikirimkan bersama ATT sh lama. Sebagai contoh, tanda hubung dalam sistem debian dimaksudkan sedekat mungkin dengan yang lama /bin/sh.
sorontar
Anda menerima masalah dengan premis pertanyaan . Komentar semacam itu salah menempatkan jawaban.
JdeBP
14

Solaris 10 masih memiliki binary shell Bourne sebagai warisan /bin/sh, dan ini jelas bukan shell yang kompatibel dengan POSIX.

Semoga, Solaris 11 mematahkan tradisi menjengkelkan ini dengan memberikan ksh93apa adanya /bin/sh.

Jlliagre
sumber
4

Kotak OSX ini memiliki / bin / sh sebagai:

$ 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
sumber
2
Menariknya, kedua file tersebut melaporkan menjadi GNU bash 3.2.57 (1) - dirilis di laptop saya, tetapi berbeda beberapa kilobyte (632672 byte untuk / bin / sh vs 628496 byte untuk / bin / bash).
Gaurav