我正在尝试替换grep的默认版本:(BSD grep 2.5.1-FreeBSD)
在我的Mac(Mojave 10.14.6)上
,当我运行推荐的命令以将BSD版本替换为gnu版本时:
brew install grep --with-default-names
出现上述错误。有人看到了,知道解决方法吗?
答案 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下找到的任何配置文件。)