... по-умолчанию в вашем PATH
?
За время своей профессиональной деятельности я периодически сталкивался с тем, что command line tools в MacOS работают не так, как в Linux. Из того, что сразу могу вспомнить: sed, tar, grep. Хорошо, что сейчас всегда можно просто пошарить диркеторию с докер-контейнером и быстренько выполнить нужный набор команд, ожидающий именно GNU utils.
В клубе я как-то видел комментарий, советующий сделать gnu-sed выбором по-умолчанию. Чтобы каждый раз не настраивать все с нуля, у меня есть репозиторий с дотфайлами и я подумываю сделать GNU utils дефолтными. Но тут возникает вопрос: какие именно? Все возможные или только определенные? И есть ли в такой замене отрицательная сторона вопроса?
Основная тема батла: Какой набор исполныемых файлов по-умолчанию в $PATH
в вашей рабочей Apple-машине? Все без изменений (MacOs built-in) или какие-то утилиты обязательно GNU? Какие именно?
Так же можно побатлить по более общему вопросу GNU vs BSD utils?
за «🐃GNU utils»
за «🍏MacOs (BSD) built-in»
Проще жить когда у тебя единообразие. А то потом когда какой-то флаг в таре или грепе не подходит сидишь хелпы/маны читаешь или стек оверфлоу гуглишь. Ну такое.
Ansible, например, не умеет работать с bsd утилитами. Ему нужны gnu. Тоже самое со скриптами.
А каких-то функций в bsd вообще нет. Поэтому поставила coreutils через brew и пользуюсь им по умолчанию.
Позиция больше теоретическая, маками почти не пользуюсь. Но в целом стараюсь минимально модифицировать системы от их дефолтного состояния.
Например, легко представлю, что чей-то чужой скрипт вызывает утилиты с разными наборами флагов на Linux и на macOS, а набор флагов определяет по
uname
, а не проверяя версию утилиты. Тогда если у меняsed
/grep
начинает вести себя по-другому, для скрипта это неожиданно, а последствия неизвестны.