Vẫn còn các hệ thống xung quanh với nhị phân / bin / sh?


24

/bin/sh, shell Bourne được tạo vào năm 1977, từng là shell mặc định cho các hệ thống Unix.

Ngày nay, tệp này vẫn tồn tại nhưng chủ yếu chỉ là một liên kết tượng trưng đến trình bao tương thích POSIX mặc định được cài đặt trên hệ thống:

  • trên RHEL / CentOS, nó trỏ tới /bin/bash, vỏ Bourne Again
  • trên Ubuntu Linux, nó chỉ ra /bin/dash, trình vỏ Debian Almquist
  • trên Debian, nó trỏ đến /bin/dash(6.0 trở lên; các bản phát hành Debian cũ hơn đã trỏ đến /bin/bash)

Điều này làm tôi tò mò: Có một hệ thống Unix, hay Linux distro, vẫn cung cấp nhị phân cho /bin/sh?




1
macOS nào. Có lẽ đó được tính là FreeBSD.
DisplayName

1
buildroot cho các hệ thống linux nhúng có dung lượng bộ nhớ nhỏ thường sẽ chỉ sử dụng một đơn giản / bin / sh (symlink vào busybox). Không chắc chắn nếu bạn muốn điều này được tính là hệ thống với nhị phân / bin / sh.
Jürgen Schwietering

Câu trả lời:


30

/bin/sh không phải lúc nào cũng là một liên kết tượng trưng

NetBSD là một hệ thống /bin/shkhông phải là một liên kết tượng trưng. Cài đặt mặc định bao gồm ba shell: shell Korn, shell C và shell Almquist đã sửa đổi. Trong số này, cái sau chỉ được cài đặt như /bin/sh.

Interix (hệ thống con POSIX thứ hai cho Windows NT) không có /bin/shdưới dạng liên kết tượng trưng. Một nhị phân duy nhất của vỏ MirBSD Korn được liên kết hai lần /bin/sh/bin/mksh.

FreeBSD và TrueOS phái sinh của nó (trước đây là PC-BSD) có vỏ TENEX C là cả hai /bin/csh/bin/tcshvỏ Almquist là (chỉ) /bin/sh. Không có symlink ở đó.

OpenBSD có (bản gốc) C shell như /bin/cshvà PD Korn shell liên kết ba lần như /bin/sh, /bin/ksh, và /bin/rksh. Cũng không có symlink.


4
Có nhiều điều để nói về OpenSolaris và Schillix nữa.
JdeBP

Tôi đã có thể khá hài lòng cho bạn để có điểm. Đừng lo lắng. @schily là người đóng góp Stack Exchange không thường xuyên. Có lẽ xe sẽ điền vào Schillix và OpenSolaris.
JdeBP

Tôi không hiểu tại sao một symlink lại quan trọng như vậy. Nếu trong /binthư mục tôi làm ln ksh sh, có một cuộc hardlinkgọi sh, nó không phải là một liên kết tượng trưng. Nó có phải là shnhị phân không?
sorontar

Tôi tin rằng những gì được dự định với một số nhị phân được đặt hoặc được liên kết trong '/ bin / sh' mới là điều quan trọng. Tất cả các hệ thống AFAIK có một /bin/sh. Không có tàu AFAIK nào có sh ATT cũ. Ví dụ, dấu gạch ngang trong các hệ thống debian được dự định càng gần càng tốt với một cái cũ /bin/sh.
sorontar

Bạn đang có vấn đề với tiền đề của câu hỏi . Bình luận như vậy được đặt sai so với một câu trả lời.
JdeBP

14

Solaris 10 vẫn có nhị phân vỏ Bourne kế thừa /bin/sh, và đây chắc chắn không phải là vỏ tương thích POSIX.

Hy vọng, Solaris 11 đã phá vỡ truyền thống khó chịu này bằng cách cung cấp ksh93như /bin/sh.


4

Hộp OSX này có / bin / sh là:

$ 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
Thật thú vị, cả hai tệp báo cáo là GNU bash 3.2.57 (1) - miễn phí trên máy tính xách tay của tôi, nhưng khác nhau một vài kilobyte (632672 byte cho / bin / sh so với 628496 byte cho / bin / bash).
Gaurav
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.