3

Я был в основном доволен MacOS как платформой dev, и она чем-то похожа на командную строку linux, но есть ряд заметных исключений:

  • все команды: поведение разбора аргументов отличается. Linux будет принимать флаги в любом порядке, включая флаги следующих файлов. В MacOS флаги следующих файлов игнорируются; флаги должны быть представлены перед любым именем файла

  • base64: по умолчанию не установлено. после установки НЕ принимает флаг '-i', необходимый в Linux для игнорирования пробелов в кодированном base64 тексте.

  • sed: MacOS обрабатывает флаг "-i" ОЧЕНЬ иначе, чем Linux (требуется расширение, которое нарушает скрипты в Linux). расширенное регулярное выражение "-E" в MacOS и "-e" в Linux

(плюс множество других вопросов ...)

Почти в каждом случае я обнаружил, что поведенческий вариант Linux проще в использовании / более мощный. Есть ли способ обновить утилиты командной строки MacOS, чтобы сделать ее более похожей на Linux? Или я думаю об этом неправильно и должен выпить немного коул-помощника? Это незначительно, но эти глюки заставляют меня дергать себя за волосы, когда я пытаюсь перемещаться между разработчиками Linux / MacOS.

4 ответа4

2

Различные инструменты GNU доступны в Fink или DarwinPorts или еще много чего.

2

Дарвин, основа Unix Mac OS X, по сути является разновидностью BSD, поэтому некоторые различия, которые вы видите, связаны с этим. Отсутствие определенных инструментов, которые могут быть стандартными в большинстве или во всех дистрибутивах Linux, может быть решено

  • используя менеджер пакетов, такой как
    • MacPorts или
    • Финк; или
  • установка из источника.

Иногда пакеты недопустимо сильно отстают. Например, я обнаружил ошибку в tmux 1.4, которая делает его непригодным для меня, но у macports еще нет 1.5. Поэтому установка из исходного кода может быть предпочтительнее во многих случаях.

0

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

И если вам мешают встроенные команды оболочки, введите в оболочке ps -p $$. Смотрите название вывода оболочки под CMD. Если оболочки отличаются, чем просто установить на OSX тот же тип оболочки, что и в linux. Может быть tcsh и zsh.

0

1) Установить Homebrew

2) "заваривать coreutils gnu-sed gnu-tar gnu-getopt gnu-time gnu-which"

Тогда все стандартные вещи linux доступны с префиксом "g", поэтому вместо "tar" используется "gtar".

Немного взломав, можно переключаться между исходными программами BSD и версиями GNU/Linux. например, установите /usr /local /gnubin, который имеет символические ссылки, такие как tar -> /usr /local /bin /gtar. Затем поместите этот каталог сначала в переменную PATH. Там также используются псевдонимы, но я не большой поклонник псевдонимов, которые совпадают с реальной программой (я считаю, что это хрупкие и подвержены ошибкам).

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