фото Шарон МакКучеон на Бессмысленно
Я часто слышу людей, говорящие, что MacOS и Linux похожи. Я хотел бы предложить, что они на самом деле очень разные.
Но почему этот вопрос? Ну, за один, я пишу много кода для CI (непрерывная интеграция). Различия достаточно большие, чтобы сделать это сложным, чтобы повторно использовать более сложные сценарии локально и в CI.
Оболочка
MacOS недавно изменил свою оболочку по умолчанию в ZSH. До этого он использовал десятилетие старого выпуска Bash.
Теперь ничего не останавливает вас от установки последней версии Bash. Если вы пишете скрипты для вашей команды, вряд ли у вас будет много контроля над этим.
Менеджер пакета
Это, вероятно, является наиболее значимым различием с MacOS и Linux, когда речь идет о автоматизации сценариев. Большинство людей на Mac полагаются на доме, в то время как большинство серверов на Linux используют APT. Он не только отличается для установки пакетов, но так добавляет новые программные источники.
Докер
Поскольку Docker для Mac работает на виртуальной машине (используя Linuxkit ), есть значительные различия с запущенными контейнерами.
Объемы (привязки крепления) имеют более низкую производительность. Это может ограничить, сколько вещей вы можете бросить в состав, если ваш проект является большой кодовой базой.
Разрешения файла отображаются по-разному из контейнера к хосту. Linux может использовать подчиненные UIDs и Gids, в то время как MacOS отображает всех пользователей в одну UID/GID на хосте.
найти
MacOS использует другую реализацию находки. Linux имеет пару дополнительных вариантов, а путь поиска не является обязательным.
netstat.
Точно так же Найти
, Netstat
На Linux является другой реализацией. Для определенных задач вам нужно будет использовать lsof
когда на MacOS. Выход для lsof
Также отличается, поэтому вам нужно будет реализовать другой анализ кода для каждой операционной системы.
ifconfig.
ifconfig
устаревают на Linux. Рекомендуется писать новые скрипты с IP
вместо. Так как MacOS не имеет ип
Вы застряли с написанием реализации для каждой операционной системы.
семинатор
Скаргс
, который используется для аргументов трубопроводов в другую команду, немного по-разному работает на MacO. Если предыдущая команда не имеет вывода, Скаргс
на MacOS не будет запускать команду.
в этом
MacOS использует Launchd, который принимает конфигурацию XML для определения новых услуг. Большинство современных дистрибутивов Linux полагаются на SystemD, в котором есть формат конфигурации INI.
В заключение
Вы столкнулись с другими несоответствиями между двумя операционными системами? Каковы некоторые из лучших практик, которые вы следуете за написание портативных сценариев?
Оригинал: «https://dev.to/aghost7/differences-between-macos-and-linux-scripting-74d»