brew install grep --with-default-names给出“无效选项”错误

时间:2019-10-21 00:29:07

标签: macos gnu

我正在尝试替换grep的默认版本:(BSD grep 2.5.1-FreeBSD)

在我的Mac(Mojave 10.14.6)上

,当我运行推荐的命令以将BSD版本替换为gnu版本时:

brew install grep --with-default-names

出现上述错误。有人看到了,知道解决方法吗?

1 个答案:

答案 0 :(得分:2)

Homebrew删除了--with-default-names,因为它引起了问题和支持请求,因此您要求的特定工作流程已从项目中删除。

但是,记录了一种解决方法:

macOS还提供的命令已安装了前缀“ g”。 如果需要使用这些命令的常规名称,则可以 可以从bashrc中将“ gnubin”目录添加到PATH中,例如:

PATH =“ / usr / local / opt / coreutils / libexec / gnubin:$ PATH”

参考:https://github.com/Homebrew/brew/issues/5731

编辑:在Mac上,通常基于用户的配置更改会进入$HOME/.bash_profile,这是我建议的位置。

信息:通常没有Mac“ $ HOME / .bashrc”(尽管您可以创建一个并且它应该可以工作)。或者,您可以使用/ etc / profile / bashrc中的版本为所有用户“编辑” bashrc。只是指出为什么看不到文件-我仍然建议为此编辑本地.bash_profile,因为稍后您可能会看到它,:-)

下面是显示已安装gnubin的示例。 Bash的Mac用户可能已经熟悉内置date命令不支持-d或Linux或GNU工具上的其他选项的问题。无论如何,安装了coreutils并更新了PATH之后,现在我可以使用和编写Bash脚本,而无需测试操作系统是否为“ darwin”。

$ which date
/usr/local/opt/coreutils/libexec/gnubin/date
$ date -d @1583927956
Wed Mar 11 07:59:16 EDT 2020

...如果我想在osx版本之前安装另一个GNU工具-例如GNU find-那么我也需要为该工具更新$ PATH变量。您要成为“默认”的每个Brew命令都需要修改PATH。

这种方法不会损害您的系统命令。苹果提供的任何脚本甚至都不会加载用户的$ PATH变量,因此这些脚本将默认为系统版本。 (这是使用用户的bash_profile的另一个原因,请勿修改在/ etc下找到的任何配置文件。)