Я покупаю IMAC. Я давно работаю над Linux и занимаюсь сценариями bash. Мне было интересно, все ли команды и функции bash доступны в Mac OS? У кого-нибудь есть опыт работы со скриптами для Mac bash? Я ценю ваш вклад.
источник
Я покупаю IMAC. Я давно работаю над Linux и занимаюсь сценариями bash. Мне было интересно, все ли команды и функции bash доступны в Mac OS? У кого-нибудь есть опыт работы со скриптами для Mac bash? Я ценю ваш вклад.
Сам Bash будет в основном таким же. Будет несколько небольших отличий, но ни одно из них не повлияет на переносимость ваших скриптов.
Основная проблема заключается в том, что coreutils для MacOS основаны на FreeBSD, в то время как утилиты, к которым вы привыкли, наиболее вероятны из проекта GNU. Coreutils FreeBSD не всегда совместимы с coreutils GNU. Существуют различия в производительности и поведении между версиями sed , grep , ps и других утилит GNU и FreeBSD .
Вы можете установить GNU coreutils, но у них есть g-
префиксы (например, gcat
для cat
). Это не очень хорошая идея , чтобы заменить MacOS Coreutils с GNU Coreutils.
ps
имеет разные флаги, как иgrep
). Я несколько раз ударился головой о стену, пытаясь понять, почему мой скрипт Ubuntu не выдает такой же результат на моем Mac.Если это имеет значение,
bash
на Mac OS X Mountain Lion по-прежнему версия 3.2. Большинство дистрибутивов Linux в настоящее время поставляются с 4.x, поэтому вам не хватит версии 4. В настоящее время версия 4.2.45 доступна от Homebrew в качестве обходного пути. Я не знаю, какая версия есть в Mavericks, я не уверен, что кому-то, кто знает, разрешено говорить.Как уже упоминалось другими,
bash
это то же самоеbash
(кроме уже отмеченных версий), но Mac OS X использует (в основном) BSD. Многие из стандартных системных утилит имеют несколько разные параметры или ведут себя немного иначе. Их, к сожалению, слишком много, чтобы перечислять здесь.источник
Установите homebrew (менеджер пакетов), затем установите версии GNU некоторых основных утилит:
После каждой установки будут отображаться шаги, которые вы можете выполнить, чтобы вы могли просто вызывать
date
их,gdate
например, вместо того , чтобы вы все еще могли использовать свои сценарии Linux bash без каких-либо изменений.Поздравляем, вы только что решили 99% проблем межплатформенного скриптинга.
источник
Одна вещь, которая может расстраивать переход с Linux на Mac, - это отсутствие
/proc
псевдофайловой системы. Это сломало ряд моих сценариев Linux, и может быть непросто найти подходящие способы получить ту же информацию, что иproc
в вашем скрипте Mac bash.источник
Я «в основном Linux, иногда Mac», и я считаю, что:
Баш,
~/.bashrc
и в~/.bash_aliases
основном работают одинаково.Одна проблема, которую я обнаружил, заключалась в том, что одна из команд изменения цвета не работала на Mac. Из этого и другого опыта я научился держать окно терминала открытым и входить в систему при настройке моего
.bashrc
файла. Это было то, что я могу проверить «новое окно» и найти любые ошибки во все еще зарегистрированном.источник