Sự khác biệt chính giữa vùng người dùng BSD và GNU / Linux là gì?


38

Tôi đã đọc rất nhiều về Unix & Linux về BSD và GNU, v.v. Nhưng tôi vẫn không hiểu một số khác biệt thực tế, thực tế giữa vùng người dùng BSD và GNU, mặc dù thực tế là chúng thường được đề cập. Ai đó có thể xây dựng?

Khi trả lời, vui lòng giải thích đầy đủ các kết nối lịch sử, lưu ý rằng tôi chưa sống đủ lâu để trải qua một thời gian khi GNU / Linux không phải là UNIX chính thống (ngoại trừ OS X).


2
Tôi đã đăng một danh sách các khác biệt so với GNU / Linux trong OS X trong môi trường dòng lệnh ở đây: reddit.com/r/commandline/comments/4jydnw/ .
nisetama

Câu trả lời:


28

Thuật ngữ "userland" có thể đề cập đến nhiều thứ trong các bối cảnh khác nhau, nhưng ở đây tôi hiểu "GNU userland" so với "BSD userland" là tập hợp chương trình tối thiểu mặc định đi kèm với phân phối.

Sự khác biệt chính là hai vùng người dùng bắt đầu với mã nguồn hoàn toàn khác nhau. GNU mã nguồn mã nguồn NetBSD mã nguồn mèo . Chỉ từ chương trình khái niệm đơn giản đó, bạn có thể thấy con mèo của NetBSD sử dụng các cờ dòng lệnh đơn, truyền thống. Các chương trình GNU có xu hướng có các cờ đơn, nhưng cũng có các --something-longtùy chọn loại. Các chương trình GNU cũng có xu hướng tương thích POSIX.

Sự khác biệt trong mã nguồn sẽ cho vay hai hành vi khác nhau của người dùng trong một số trường hợp.

Dường như NetBSD (ít nhất) sử dụng phiên bản libc của riêng mình, thư viện C tiêu chuẩn. Tôi đang ở trên đầu của tôi ở đây, nhưng libc và liên kết động có liên quan đến nhau một cách kỳ lạ. Một lần nữa, mã nguồn khác nhau sẽ dẫn đến hành vi khác nhau.

Tôi nghĩ rằng với tư cách là một người dùng shell, bạn sẽ thấy rằng nó pssẽ hoạt động khác đi và lscó thể cung cấp cho bạn đầu ra hơi khác so với trước đây. Bạn sẽ phải tìm các cờ dòng lệnh tương đương cho một số chương trình, nếu bạn sử dụng --long-optionloại cờ dòng lệnh.

Trong lịch sử, sự hiểu biết của tôi là vùng người dùng BSD xuống trực tiếp nhiều hơn từ Unix và V7 Bell Labs Unix, thông qua cổng 32V sang phần cứng VAX. GNU userland mới hơn, được viết ít nhất là một phần nào đó để phản ứng lại những nỗ lực của AT & T nhằm giữ bí mật mã được bảo vệ chặt chẽ vào đầu những năm 80. Sau khi thoái vốn năm 1983, AT & T đã cố gắng "kiếm tiền" Unix. Một phần trong đó là cấp phép cho mã nguồn theo cách ngăn chặn hầu hết mọi người không bao giờ nhìn thấy nó. Richard Stallman và những người khác có vấn đề với điều này. Dự án GNU của họ tồn tại đặc biệt để tạo ra một hệ thống giống như Unix có thể chia sẻ tự do.

Trong khi đó, vào năm 1993, AT & T đã kiện hệ thống Đại học California về BSD ('B' là Berkeley, nơi đặt Đại học California). Mọi người tại Berkeley đã thay thế tất cả nguồn ban đầu của AT & T bằng mã mới và mã mới đó đã trở thành tổ tiên của ít nhất là vùng người dùng của NetBSD. AT & T và UCB đã đi đến một thỏa thuận vào năm 1994, được tiết lộ cho công chúng vào năm 2004.

Đương nhiên, ít nhất là các ý tưởng thụ phấn chéo, do đó, ít nhất có sự tương đồng về mặt khái niệm giữa vùng người dùng GNU và BSD, nhưng các trường hợp góc chắc chắn khác nhau.


1
Cả hai liên kết của bạn chỉ đến một địa điểm.

Vì vậy, điều đó có xu hướng được sử dụng vỏ thực tế? cờ dài và trường hợp góc?
strugee

12
Kinh nghiệm của tôi cũng là GNU có khả năng mở rộng nghiêm túc hơn. Có thể điều đó cũng được tính là "trường hợp góc", nhưng thực sự rất bực bội khi bạn bị sednghẹt thở trên các dòng đầu vào dài hoặc dấu phân cách của bạn greptrên dữ liệu nhị phân.
tripleee

Một điểm khác biệt lớn là, GNU không bao giờ có Kernel của riêng mình trong khi BSD dựa trên và xây dựng dựa trên kernel của riêng họ, mà, trong các phần, được sử dụng rộng rãi trong các hệ thống unix thương mại. MAC OS X sử dụng Darwin làm Hạt nhân dựa trên BSK chẳng hạn.
trực quan

@visualication Có GNU HURD nhưng chưa được phát hành
Dmitry Kudriavtsev
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.