Чи взаємозамінні команди Linux з командами Unix?


21

Я вважаю, що деякі команди, наприклад, lsі pwd, можна використовувати як в Linux, так і в Unix.

  • Чи всі команди Linux можна використовувати в системах Unix, а всі команди Unix можна використовувати в Linux?
  • Або просто, що всі команди Linux можуть працювати на Unix, але не всі команди Unix можуть працювати в Linux.
  • Або що всі команди Unix можуть працювати в Linux, але не всі команди Linux можуть працювати на Unix?
  • Або є посилання, яке показує мені, які команди можуть працювати в Linux і Unix, а де обидва мають свою унікальну команду?

28
Читайте про "POSIX".
Даніель Андерссон

1
Зауважте, що це не команда "Linux", це команда GNU. Наприклад, інструменти GNU можна встановити на FreeBSD.
new123456

2
Чортів, інструменти GNU можна навіть встановити на Unix.
MSalters

Відповіді:


37

Коментар Даніеля Андерссона щодо POSIX - справжня відповідь тут: існує стандарт під назвою POSIX, який визначає ядро ​​системи, схожої на UNIX, як з точки зору команд оболонки, так і системних викликів. Теоретично, якщо ви пишете програмне забезпечення на специфікацію POSIX, слід скласти та запустити його на будь-якій системі UNIX, Linux, BSD тощо.

http://pubs.opengroup.org/onlinepubs/009695399/mindex.html дасть вам остаточну відповідь щодо того, що є POSIX, але це не корисна відповідь у практичних цілях. Хтось ще може мати хороші посилання на команду щодо загальних відмінностей між системами Linux та іншими UNIX-подібними системами.

Один конкретний приклад: "killall" в Linux вбиває всі процеси з певним іменем. У Solaris він вимикає систему. Важливо не використовувати неправильну.


10
@ tchrist- якщо ви дійсно так думаєте, введіть "sudo apt-get" на Mac OS X і подивіться, наскільки далеко ви доїдете.
Девід Робінсон

7
@tchrist, коли Тед Вонг згадав Linux, він, очевидно, говорив про операційну систему, яка також відома як GNU / Linux, і там прямо в назві написано, що "GNU не Unix!" ;)
Жоао Портела

4
Насправді, наскільки я розумію, Mac OS X IS сертифікований Unix - щось дуже мало (якщо таке є) з досягнутих варіантів Linux. Очевидно, це було б лише питанням сертифікації на дуже базовий стандарт.
Білл К

2
@tchrist л inux я сек N од U щ X
Дейв

4
@Dave Bah. Не кульгай. Назвати речі своїми іменами, і пам'ятайте , що троянда під будь-яким іншим ім'ям буде ще солодкий запах. Hie тебе до коробки Windows , і дізнатися , що Unix це НЕ . Але Linux - це, звичайно, Unix. catcat
tchrist

18

Більшість дистрибутивів Linux сьогодні оснащені безліччю необхідного програмного забезпечення GNU та GNU Toolchain. GNU був проектом переписати копію Unix, яка є свободою, яка пізніше отримала в пару разом з ядром Linux. Під час використання lsна машині Unix ви використовуєте оригінал / те, що стало оригіналом ls. Коли ви використовуєте lsGNU / Linux, ви використовуєте GNU, lsнаписаний з нуля, таким же, як ls. Однак не все програмне забезпечення GNU точно таке ж, як і його аналоги Unix. Тепер, коли Unix по суті перетворився на BSD, дистрибутиви GNU / Linux також можуть містити версію BSD цього інструменту. Наприклад, bsdtarі tarприходьте до розуму.

tl; dr: Вони не зовсім той самий код, але вони мають бути здебільшого точно однаковими.


2
Щодо різниць, то psце найприємніший приклад, про який я можу придумати. Різні комутатори на різних системах (Linux, AIX та Solaris). Також різний формат виводу. Хоча мета цієї команди однакова для всіх систем.
elmo

5

Ви не вказали, про який UNIX мова йде (BSD, System V ...). Універсальної (UNIX) відповіді немає. Кожен варіант UNIX має свої власні команди (наприклад, Mac OS X), тому навіть між UNIX є різні команди. Зазвичай старі команди (наприклад, ls, pwd, cd, cp, mv, rm ...) мають тенденцію бути однаковими для всіх UNIX-ароматів (включаючи Linux).



4

Перше, що вам потрібно врахувати, - це те, що команди насправді є невеликими програмами, в цьому сенсі не обов'язково є частиною операційної системи, якщо ви розділяєте волоски. Старі та класичні існують вже давно і входять до більшості * nix систем. Від того, наскільки "комплектується" ОС, залежить те, що постачається з пакетом.

Як приклад, більшість компакт-дисків для відновлення / надзвичайних ситуацій, з яких ви можете завантажуватись, містять тонкий дистрибутив Linux, ви виявите, що деякі типові команди можуть бути відсутні у цих системах, лише тому, що вони не знадобляться в більшості випадків.


3

У solaris вам просто потрібно додати /usr/gnu/binсвій шлях або обмінятися ним, /usr/binі ваші набори команд будуть дуже схожими

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.