Các lệnh Linux có thể hoán đổi với các lệnh Unix không?


21

Tôi thấy rằng một số lệnh, ví dụ, lspwd, có thể được sử dụng trên cả hệ thống Linux và Unix.

  • Có phải tất cả các lệnh Linux đều có thể được sử dụng trong các hệ thống Unix và tất cả các lệnh Unix có thể được sử dụng trong Linux?
  • Hoặc chỉ là tất cả các lệnh Linux có thể chạy trên Unix nhưng không phải tất cả các lệnh Unix đều có thể chạy trên Linux.
  • Hoặc tất cả các lệnh Unix có thể chạy trên Linux, nhưng không phải tất cả các lệnh Linux đều có thể chạy trên Unix?
  • Hoặc có một tài liệu tham khảo để chỉ cho tôi những lệnh nào có thể chạy trên cả Linux và Unix và cả hai đều có lệnh duy nhất của riêng mình?

28
Đọc về "POSIX".
Daniel Andersson

1
Lưu ý rằng đó không phải là lệnh "Linux", đó là lệnh GNU. Các công cụ GNU có thể được cài đặt trên FreeBSD, ví dụ.
new123456

2
Heck, các công cụ GNU thậm chí có thể được cài đặt trên Unix.
MSalters

Câu trả lời:


37

Nhận xét của Daniel Andersson về POSIX là câu trả lời thực sự ở đây: có một tiêu chuẩn gọi là POSIX, định nghĩa cốt lõi của một hệ thống giống như UNIX, cả về các lệnh shell và các lệnh gọi hệ thống. Về lý thuyết, nếu bạn viết phần mềm vào thông số POSIX, có thể biên dịch và chạy nó trên bất kỳ hệ thống UNIX, Linux, BSD, v.v.

http://pub.opengroup.org/onlinepub/009695399/mindex.html sẽ cung cấp cho bạn câu trả lời dứt khoát về những gì cấu thành POSIX, nhưng đó không phải là câu trả lời hữu ích cho mục đích thực tế. Một số người khác có thể có các tham chiếu lệnh tốt cho các khác biệt chung giữa các hệ thống Linux và các hệ thống tương tự UNIX khác.

Một ví dụ cụ thể: "killall" trên Linux giết chết tất cả các quy trình với một tên cụ thể. Trên Solaris, nó tắt hệ thống. Quan trọng không sử dụng sai.


10
@ tchrist- nếu bạn thực sự nghĩ vậy, hãy nhập "sudo apt-get" trên Mac OS X và xem nó giúp bạn đi được bao xa.
David Robinson

7
@tchrist khi Ted Wong đề cập đến Linux, rõ ràng anh ta đang nói về hệ điều hành còn được gọi là GNU / Linux và nó nói ngay đó với cái tên "GNU's Not Unix!" ;)
João Portela

4
Trên thực tế, như tôi hiểu, Mac OS X IS là một Unix được chứng nhận - điều mà rất ít (nếu có) các biến thể Linux đạt được. Rõ ràng đây sẽ chỉ là vấn đề chứng nhận cho một tiêu chuẩn rất cơ bản.
Bill K

2
@tchrist L inux tôi s N ot U ni X
Dave

4
@Dave Bah. Đừng khập khiễng. Gọi một thuổng là một thuổng, một cata cat, và hãy nhớ rằng một bông hồng bởi bất kỳ tên nào khác sẽ vẫn có mùi ngọt ngào. Hie thee vào một hộp Windows và tìm hiểu những gì Unix không phải là . Nhưng Linux tất nhiên là Unix.
tchrist

18

Hầu hết các bản phân phối Linux ngày nay đều đi kèm với rất nhiều phần mềm GNU cần thiết và GNU Toolchain. GNU là một dự án để viết lại một bản sao Unix tự do mà sau này được ghép nối với nhân Linux. Khi bạn sử dụng lstrên máy Unix, bạn đang sử dụng bản gốc / những gì trở thành bản gốc ls. Khi bạn sử dụng lstrên GNU / Linux, bạn đang sử dụng GNU lsđược viết từ đầu giống như ls. Tuy nhiên, không phải tất cả các phần mềm GNU đều giống hệt như các đối tác Unix của nó. Bây giờ Unix về cơ bản đã biến thành BSD, các bản phân phối GNU / Linux cũng có thể chứa phiên bản BSD của công cụ đó. Ví dụ, bsdtartarđến với tâm trí.

tl; dr: Chúng không phải là cùng một mã, nhưng đối với hầu hết các phần đều giống hệt nhau.


2
Đối với sự khác biệt, đây pslà ví dụ khó chịu nhất mà tôi có thể nghĩ ra. Các công tắc khác nhau trên các hệ thống khác nhau (Linux, AIX và Solaris). Ngoài ra định dạng khác nhau của đầu ra. Mặc dù mục đích của lệnh đó là giống nhau trên tất cả các hệ thống.
elmo

5

Bạn đã không chỉ định UNIX mà bạn đang nói về (BSD, System V ...). Không có câu trả lời chung (UNIX). Mỗi biến thể UNIX có các lệnh tùy chỉnh riêng (lấy Mac OS X làm ví dụ), do đó, ngay cả giữa các UNIX cũng có các lệnh khác nhau. Thông thường các lệnh cũ (như ls, pwd, cd, cp, mv, rm ...) có xu hướng giống nhau trên tất cả các hương vị UNIX (bao gồm cả Linux).



4

Điều bạn cần xem xét đầu tiên là các lệnh thực sự là các chương trình nhỏ, theo nghĩa đó không nhất thiết là một phần của hệ điều hành nếu bạn chia tóc. Những cái cũ và cổ điển đã có từ rất lâu, và được bao gồm trong hầu hết các hệ thống * nix. Hệ điều hành "hoàn thành" như thế nào phụ thuộc vào những gì đi kèm với gói.

Như một ví dụ về hầu hết các đĩa CD khôi phục / khẩn cấp mà bạn có thể khởi động từ một bản phân phối Linux mỏng, bạn sẽ thấy rằng một số lệnh điển hình có thể không có trong các hệ thống này, hoàn toàn là vì chúng không cần thiết trong hầu hết các trường hợp.


3

Trên solaris bạn chỉ cần thêm /usr/gnu/binvào đường dẫn của mình hoặc trao đổi với nó /usr/binvà các bộ lệnh của bạn sẽ rất giống nhau

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.