我正在尝试在* nix和macos之间的shell配置中开发互操作性。我使用的各种脚本和配置取决于gnu实用程序,并假定它们位于PATH中。为此,我在可能且适当的地方安装了许多带有自制软件和--with-default-names
开关的GNU命令行工具。
但是,在自制程序公式中,binutils和coreutils软件包未附带--with-default-names
开关。要在交互式外壳中实现奇偶校验,我可以简单地设置别名,例如alias dircolors='gdircolors'
。但是,脚本是在子Shell中执行的,因此不会继承别名,因此dircolors
将失败。测试依赖项的存在也不起作用,因为在chown
的情况下,将使用内置程序包(如果我使用macos发行版中不存在的功能,则失败。)
这时,我正在考虑创建一堆shell脚本,以测试该实用程序的gnu版本是否存在,并在找到后执行该脚本,然后将其放置在PATH中,就像这样:
$ cat chmod
if command -v gchmod > /dev/null 2> /dev/null ; then
gchmod "$@"
else
chmod "$@"
fi
这似乎太笨拙了,不过,我宁愿避免这种情况。
除了自己构建binutils和coreutils外,还有哪些其他解决方案呢?