Как я могу поддерживать согласованность между моей средой оболочки linux и macos, используя homebrew? - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь разработать совместимость в моей конфигурации оболочки между * nix и macos. Различные скрипты и конфигурации, которые я использую, зависят от утилит gnu и предполагают, что они находятся в PATH. Для этого я установил множество инструментов командной строки GNU с помощью homebrew и переключателя --with-default-names, где это возможно и целесообразно.

Однако пакеты binutils и coreutils не поставляются с переключателем --with-default-names в формуле homebrew. Для достижения паритета в интерактивной оболочке я могу просто создать псевдонимы, например alias dircolors='gdircolors'. Однако сценарий выполняется в подоболочке и, следовательно, не наследует псевдонимы, поэтому dircolors завершится ошибкой. Тестирование на наличие зависимости также не работает, так как в случае chown будет использоваться встроенный пакет (и произойдет сбой, если я использую функции, которых нет в дистрибутиве macos).

На данный момент я рассматриваю возможность создания пакета сценариев оболочки, который проверяет наличие версии утилиты gnu и выполняет ее, если она найдена, и помещает их в переменную PATH следующим образом:

$ cat chmod
if command -v gchmod > /dev/null 2> /dev/null ; then
  gchmod "$@"
else
  chmod "$@"
fi

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

Помимо сборки binutils и coreutils, какие еще решения возможны?

...