Lựa chọn nào - Các lệnh kiểu BSD hoặc Unix nếu có?


14

Các lệnh như psđi kèm với rất nhiều tham số, đặc biệt là vì chúng cho phép sử dụng một tùy chọn để chọn giữa các cờ kiểu Unix và BSD. Tôi hy vọng bạn có được quan điểm của tôi ở đây.

Vì vậy, khi có sẵn một tùy chọn như vậy, tôi nên chọn tùy chọn nào để tương thích tối đa trên tất cả các hệ thống linux? (tương thích tối đa là một trong những ưu tiên chẳng hạn)

Tôi biết rằng phong cách Unix khá rõ ràng, nhưng các lệnh BSD vì một số lý do bao gồm thông tin dễ đọc hơn (ví dụ như tiêu đề cột, cột CPU, v.v.). Tất nhiên, xin vui lòng sửa tôi nếu tôi sai, nhưng đó là những gì tôi cảm thấy.

Câu trả lời:


17

Khá nhiều Linux sử dụng các phiên bản GNU của các lệnh Unix lõi ban đầu ps, như, như bạn đã lưu ý, hỗ trợ cả hai tùy chọn kiểu BSD và AT & T.

Vì mục tiêu đã nêu của bạn chỉ là khả năng tương thích giữa các Linux, điều đó có nghĩa là câu trả lời là "Không thành vấn đề".

Các biến thể nhúng và rất nhỏ khác của Linux thường sử dụng BusyBox thay vì các công cụ GNU, nhưng trong trường hợp ps, nó thực sự không ảnh hưởng đến câu trả lời, vì phiên bản BusyBox bị loại bỏ nên có thể được gọi là AT & Tish hay BSDish.

Theo thời gian, các hệ thống Unixy khác đã giảm sự pskhác biệt về khả năng tương thích. Mac OS X - xuất phát gián tiếp từ BSD Unix và nói chung hoạt động tương tự như BSD Unix vẫn còn - chấp nhận cả pscờ AT & Tish và BSDish .

Solaris / OpenIndiana cũng hành xử theo cách này, mặc dù điều này ít gây ngạc nhiên hơn vì nó có lịch sử BSD và AT & T hỗn hợp.

FreeBSD, OpenBSD và NetBSD vẫn chỉ dành riêng cho phong cách BSD.

Hộp Unix càng cũ thì càng có khả năng nó chỉ chấp nhận một kiểu cờ. Bạn có thể viết lên sự khác biệt trên một hộp như vậy giống như cách chúng ta làm bây giờ: cài đặt các công cụ GNU, nếu chúng chưa được cài đặt.

Điều đó nói rằng, vẫn còn bẫy. psđầu ra thường không được phân tích cú pháp trong các tập lệnh cần có thể mang theo được, ví dụ, vì các hệ thống Unixy khác nhau ở những cột nào có sẵn, lượng dữ liệu mà HĐH sẵn sàng hiển thị cho người dùng không root, v.v.

(Nhân tiện, lưu ý rằng đó là "BSD so với AT & T", không phải "BSD so với Unix". BSD Unix vẫn là UNIX®. BSD Unix chia sẻ lịch sử phát triển trực tiếp với chi nhánh AT & T ban đầu. : AT & T và những người kế nhiệm đã mang những đổi mới của BSD về nước tại một số điểm trong lịch sử của nó. Sự thống nhất này theo thời gian một phần là do những nỗ lực của The Open Group và những người tiền nhiệm.)


Mặc dù đây là một lời giải thích tuyệt vời (và câu trả lời) nhưng nó không giúp ích gì trong câu hỏi: Tôi nên chọn phong cách nào để học?
Jarl

@Jarl: Tìm hiểu POSIX trước. Điều đó có sẵn ở khắp mọi nơi. Sau đó tìm hiểu bất kỳ biến thể kỳ lạ nào được sử dụng trên các hệ thống bạn sử dụng nhiều nhất. Bỏ qua phần còn lại.
Warren Young

Trong trường hợp các pskiểu đối số, cái nào (BSD hoặc Unix) là POSIX, thì sao?
Jarl

@Jarl: Xem thông số kỹ thuật . Nói chung, POSIX dựa trên SysVish nhiều hơn BSD, vì POSIX được định hướng kinh tế và tất cả các Unix thương mại chính thời đó đều là dẫn xuất của System V.
Warren Young

0

Trong trường hợp nghi ngờ, sử dụng cú pháp SysV. Điều này đã được nhiều người đồng ý và là tiêu chuẩn không chính thức. Các công cụ BSD xuất phát từ thời tiền sử hoặc là một phần của một số nhánh khác nhau (SysV là một nỗ lực để kết thúc các cuộc chiến Unix bằng cách đưa tất cả các dòng khác nhau dưới một mái nhà).


Tiêu chuẩn thực tế cho Linux, không phải Solaris, * BSD, OSX, v.v.
chiggsy

Chắc chắn nó là tiêu chuẩn cho Solaris (đó là các SysV đầu tiên đi ra, nhớ). Nó đã được tuân thủ bởi AIX và HP-UX của IBM, ít nhất. Các BSD là một tổ chức từ thời kỳ cũ.
vonbrand

Bạn nói đúng về Solaris là SysV, lỗi của tôi.
chiggsy

3
Được nêu lên, mặc dù tôi nghi ngờ các tham chiếu chê bai về BSD. Nó không phải là một điều xấu để tiếp tục làm mọi thứ đúng cách.
chiggsy

1
-1: Đầu tiên, tôi nghĩ bạn có nghĩa là tiêu chuẩn de jure . Để xem xét các tùy chọn kiểu SysV là tiêu chuẩn thực tế , bạn phải bỏ qua một số sự kiện tồn tại: FreeBSD, OpenBSD và NetBSD. Bạn không thể vẫy tay họ ra khỏi sự tồn tại với lập luận "tiền sử" đó. Thứ hai, Solaris không phải là Hệ thống V. đầu tiên. Đây có thể là lô hàng thương mại đầu tiên của SVR4 , nhưng SVR1 được phát triển cho Vaxen và PDP-11 .
Warren Young
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.