Назад | Перейти на главную страницу

Известные встроенные команды, которые работают по-разному в Linux и Mac

при разработке сценариев Bash я иногда запускаю его в контейнере Docker или на виртуальной машине, чтобы проверить его, но идеальное место для создания сценариев - это моя локальная рабочая станция MacOS.

Когда дело доходит до скриптов Bash, до сих пор это никогда не было проблемой. Однако сегодня я заметил, что date команда ведет себя по-разному в Linux и MacOS.

Пример сценария добавления дней к объекту даты:

Linux:

root@host$ date -d "$(date) 3 days" +%Y-%m-%d
2018-04-20

MacOS:

WS:tmp user$ date -d "$(date) 3 days" +%Y-%m-%d
usage: date [-jnRu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ...
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]

Не работает, пришлось переформатировать:

WS:tmp user$ date -j -v +3d -f "%Y-%m-%d" $(date +%Y-%m-%d) +%Y-%m-%d`
2018-04-20

Вот это боль! Простой сценарий bash, и теперь мне нужен контейнер или виртуальная машина, чтобы сделать простую манипуляцию с датой.

Это заставляет меня чувствовать, что я стреляю себе в ногу, развиваясь таким образом, и вся причина, по которой я получил Mac, заключалась в том, что он намного ближе к среде nix, чем любая версия Windows, поэтому я мог выполнять простую локальную разработку на нем.

Мои вопросы):

Мы ценим ваш опыт работы с этой темой, спасибо!

Как вы выяснили, в разных ОС будут установлены разные инструменты. Если вы в первую очередь специализируетесь на разработке сценариев для чего-то вроде Debian или CentOS, я бы очень рекомендую вам использовать эту среду для этого. Будь то виртуальная машина, облачный VPS или контейнер Docker, зависит от вас.

В большинство В некоторых случаях поведение MacOS и различных дистрибутивов Linux одинаково, но не всегда.

В качестве альтернативы вы можете использовать такие инструменты, как варево. заваривать для установки основных версий инструментов, а не только для macOS. Очевидно, здесь есть и другие предостережения, поскольку инструменты, которые перекрывают инструменты в macOS, не связаны по умолчанию, и вам придется их переопределить, но это выполнимо (это может сломать вещи, поэтому будьте осторожны). Вы также можете скомпилировать их самостоятельно.

Я не знаю списка различий между Linux и macOS. Это также зависит от того, с какой версией Linux вы хотите его сравнить.