21

Я считаю, что некоторые команды, например, ls и pwd , могут использоваться как в системах Linux, так и в системах Unix.

  • Все ли команды Linux можно использовать в системах Unix, а все команды Unix можно использовать в Linux?
  • Или просто, что все команды Linux могут работать в Unix, но не все команды Unix могут работать в Linux.
  • Или что все команды Unix могут выполняться в Linux, но не все команды Linux могут выполняться в Unix?
  • Или есть ссылка, показывающая, какие команды могут выполняться как в Linux, так и в Unix, и где обе имеют свои уникальные команды?

5 ответов5

37

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

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

Один конкретный пример: "killall" в Linux убивает все процессы с определенным именем. На Солярисе это выключает систему. Важно не использовать неправильный.

18

Сегодня большинство дистрибутивов Linux поставляются с большим количеством необходимого программного обеспечения GNU и инструментария GNU. GNU был проектом по переписыванию бесплатной копии Unix, которая позже была соединена с ядром Linux. Когда вы используете ls на Unix-машине, вы используете оригинальную / что стало с оригинальной ls . Когда вы используете ls в GNU / Linux, вы используете GNU ls который был написан с нуля так же, как ls . Однако не все программное обеспечение GNU точно так же, как его аналоги Unix. Теперь, когда Unix по сути превратился в BSD, дистрибутивы GNU / Linux могут также содержать BSD-версию этого инструмента. Например, на ум приходят bsdtar и tar .

tl; dr: они не являются точно таким же кодом, но по большей части они должны быть абсолютно одинаковыми.

5

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

4

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

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

3

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .