Sự khác biệt giữa cú pháp tiêu chuẩn và cú pháp BSD là gì?


21

Tôi đã thấy nhiều lệnh chấp nhận "cú pháp BSD" cũng như cú pháp chuẩn của chúng. Lấy pslệnh cho một ví dụ:

To see every process on the system using standard syntax:
      ps -e
      ps -ef
      ps -eF
      ps -ely

To see every process on the system using BSD syntax:
      ps ax
      ps axu

Vậy sự khác biệt giữa hai tuyến đường này là gì? Nói chung khi họ nói theo cú pháp BSD tôi nên nhớ những yếu tố nào? Có phải cú pháp này chỉ dành cho những lệnh mà chúng có trong BSD không?


Để tìm hiểu về sự khác biệt lịch sử giữa cách các hệ thống trong thời gian thực hiện psoptargs là đứng ở rìa của một vực thẳm Man Man Not Mete to know.

Câu trả lời:


18

Sự khác biệt giữa MS Office và LibreOffice là gì? Giữa Firefox và Chrome?
Họ làm gần giống nhau, nhưng họ bởi những người khác nhau với mục đích hơi khác nhau.

Có lẽ câu hỏi tốt hơn là tại sao BSD, Linux, OSX và Unix phân phối chia sẻ quá nhiều lệnh? Điều này giúp giảm sự tuân thủ POSIX . POSIX về cơ bản là một bộ tiêu chuẩn cho các hệ điều hành giống Unix; nó quy định API lõi, các lệnh và cách các lệnh đó hoạt động.

Trong trường hợp ps(một lệnh do POSIX quy định), một số đối số được yêu cầu. Chúng bao gồm những BSD. Tất cả các lệnh có nguồn gốc POSIX đều có trang man riêng nhưng chúng cần cài đặt riêng. Dành cho ps:

sudo apt-get install manpages-posix
man 1posix ps

Vậy tại sao BSD không sử dụng ps(hoặc ngược lại)?

  • psGói của chúng tôi ( procpsxem dpkg -S $(which ps):) là một ngã ba của gói khácprocps . Cả hai đều được cấp phép GPL. Điều này không tương thích với giấy phép của BSD nên không thể đưa vào đó. ( Chúng tôi có thể bao gồm BSD nhưng không cần).
  • pslà khá cụ thể kernel. Tôi nghĩ họ không tương thích về mặt kỹ thuật .

Còn những ứng dụng khác thì sao?

Hầu hết các lệnh để tuân thủ POSIX đều đến từ coreutilsgói Ubuntu . Gói này đại diện cho GNU trong GNU / Linux và nó cũng được cấp phép GPL. BSD vận chuyển các phiên bản được cấp phép tương thích BSD của riêng mình tuân thủ POSIX nhưng không nhất thiết phải hoàn toàn giống với các phiên bản GNU của chúng.

pskhông phải là lệnh POSIX duy nhất không phải là GNU . Có rất nhiều trong số họ.

Khi tôi dẫn đầu, tại sao họ phải như vậy? Họ bởi những người khác nhau trong một thời gian rất, rất dài. Đó là câu trả lời ngắn ở đây.


20

Ngày này sao cho lịch sử một chút quanh co của Unix (Wikipedia có một sơ đồ đơn giản , đó là xa từ đầy đủ). Đặc biệt, trong một thời gian, có hai dòng chính: Hệ thống V được phát triển bởi AT & T và BSD được phát triển tại Đại học California, Berkeley. Điều này là vào khoảng đầu những năm 1980, rất lâu trước Linux (1991), chứ chưa nói đến Ubuntu (2004). Thông thường, hai dòng điện này đã đưa ra các quyết định khác nhau và thậm chí ngày nay bạn sẽ tìm thấy các tài liệu tham khảo không thường xuyên về các biến thể hoặc tính năng của hệ thống V V và và BSD.

Các psngày lệnh sao lưu từ một trong những phiên bản đầu tiên của Unix (nó không phải là trong phiên bản 1, trang người đàn ông đầu tiên tôi có thể tìm thấy trực tuyến là từ phiên bản 5 (p.94) vào năm 1974). Vào thời điểm đó, pschỉ có một vài tùy chọn, ví dụ như ps asẽ hiển thị tất cả các quy trình thay vì chỉ người dùng và ps xsẽ hiển thị các quy trình không có thiết bị đầu cuối kèm theo. Bạn sẽ lưu ý rằng các tùy chọn không bắt đầu bằng -: tại thời điểm đó, quy ước sử dụng -cho các tùy chọn không phải là hệ thống gần như ngày nay, chủ yếu là các lệnh lấy tên tệp làm đối số bình thường.

Theo thời gian, các chuỗi khác nhau của Unix mở rộng psvới nhiều tùy chọn hơn. Các biến thể BSD đã chọn để giữ lại các cú pháp gốc, không có lãnh đạo -, và axvẫn còn tồn tại ngày nay. Biến thể System V đã chọn áp dụng quy ước cú pháp -cho các tùy chọn và sử dụng các chữ cái khác nhau (ví dụ ps -eđể hiển thị tất cả các quy trình). Oracle (trước đây là Sun) Solaris là một ví dụ về biến thể System V (Solaris cũng gửi một pstệp thực thi riêng , trong một thư mục không có mặc định PATH, dành cho các ứng dụng được viết bằng BSD).

Vào thời điểm Linux xuất hiện, những người sử dụng nó thường có kinh nghiệm trước đó về một biến thể Unix hoặc một biến thể khác. Linux đôi khi làm mọi thứ theo cách System V, đôi khi theo cách BSD, đôi khi theo cách riêng của mình, dựa trên những cân nhắc kỹ thuật hoặc dựa trên kinh nghiệm và thị hiếu của bất cứ ai triển khai tính năng này. psLệnh của Linux bắt đầu với các tùy chọn giống BSD, ví dụ: ps aeđể hiển thị tất cả các quy trình và bao gồm các biến môi trường trong danh sách. Theo thời gian (vào cuối những năm 1990, tôi không nhớ chính xác là khi nào), các tác giả của Linux đã psthêm các tùy chọn cho những người đã quen với System V. Vì vậy, hôm nay ps axhoặc ps -esẽ liệt kê tất cả các quy trình trong Linux và thậm chí còn có một biến môi trường ( PS_PERSONALITY) để thực hiệnps hành xử giống như các biến thể Unix cũ Unix khác nhau, vì lợi ích của các tập lệnh cũ và những người có thói quen thiết lập.

Những người đã sử dụng một số biến thể Unix không thích rằng họ phải sửa đổi chương trình và thói quen của họ khi chuyển từ biến thể Unix này sang biến thể khác. Vì vậy, đã có một nỗ lực để chuẩn hóa một tập hợp con của chức năng. Điều này dẫn đến tiêu chuẩn POSIX (dẫn đầu bởi IEEE ), mà Ubuntu theo và lớn theo sau. Phiên bản đầu tiên có phạm vi bao gồm pslệnh ra đời vào năm 1992; cái này không có sẵn trực tuyến, nhưng phiên bản 1997 thì có. Đối với pslệnh, giống như trong nhiều trường hợp khác, POSIX đã áp dụng cách thức System V để thực hiện.

Các pscú pháp tiêu chuẩn của lệnh là một trong đó là tương thích với cả hệ thống V và POSIX. Ngoài ra, cú pháp đó có thể được coi là tiêu chuẩn vì nó sử dụng -để giới thiệu các tùy chọn theo mặc định. Một số tùy chọn chỉ tồn tại ở một trong hai cú pháp; may mắn thay, chúng có thể được trộn lẫn trong cùng một cuộc gọi.

Nói chung, hệ thống BSD và vs hệ thống Vv không có bất kỳ ý nghĩa kỹ thuật nào. Nó đề cập đến lịch sử: BSD và bất cứ sự lựa chọn nào mà BSD đưa ra vào những năm 1980 và sau đó, hệ thống V V là bất cứ sự lựa chọn nào mà AT & T và các đối tác của họ (đặc biệt là Sun) đưa ra. POSIXIX là bất cứ sự lựa chọn nào mà ủy ban tiêu chuẩn hóa của IEEE đưa ra.


2

Cú pháp 'tiêu chuẩn' mà bạn đang đề cập thực sự là hệ điều hành GNU được phát triển vào những năm 1980. Các tiện ích và triết lý dựa trên GNU đã được kết hợp với nhân Linux để phát triển các bản phân phối Linux hiện đại nhất (bao gồm cả Ubuntu).

Hệ điều hành BSD được phát triển vào cuối những năm 1970, độc lập với GNU và sau đó được phân nhánh thành các phiên bản hiện đại như FreeBSD hoặc OpenBSD.

Cả GNU và BSD đều được lấy cảm hứng từ Unix và chúng có những triết lý, cú pháp hơi khác nhau, v.v.


0

Coreutils của Ubuntu là một tập hợp các ứng dụng do GNU duy trì, bao gồm toàn bộ tải công cụ (xem phần lõi hiển thị apt-cache). BSD có phiên bản riêng (GNU không tương thích với giấy phép BSD).

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.