Взаимозаменяемы ли команды 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 убивает все процессы с определенным именем. На Солярисе это выключает систему. Важно не использовать неправильный.


10
@ tchrist- если вы действительно так думаете, наберите «sudo apt-get» в Mac OS X и посмотрите, как далеко вы зашли.
Дэвид Робинсон

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

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

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

4
@ Дейв Бах. Не будь хромым. Назвать вещи своими именами, , и помните , что роза под любым другим именем будет еще сладкий запах. Подойди к коробке с Windows и узнай, чем не является Unix . Но Linux, конечно, Unix. catcat
tchrist

18

Сегодня большинство дистрибутивов Linux поставляются с большим количеством необходимого программного обеспечения GNU и инструментария GNU. 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). Также отличается формат вывода. Хотя назначение этой команды одинаково во всех системах.
Элмо

5

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



4

Первое, что вам нужно учитывать, - это то, что команды на самом деле являются небольшими программами, в этом смысле не обязательно частью операционной системы, если вы распутываетесь. Старые и классические издавна существуют и включены в большинство * nix систем. Насколько «завершена» ОС, зависит от того, что входит в комплект поставки.

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


3

На солярисе вы просто должны добавить /usr/gnu/binсвой путь или заменить его, /usr/binи ваши наборы команд будут очень похожи

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.