gsed:在使用 Homebrew 的 macOS 上找不到命令

gsed:在使用 Homebrew 的 macOS 上找不到命令

我正在使用哦我的zsh。我无法使用一些我可以在 ubuntu 上执行的命令,例如。正则表达式中的 \s。我安装了 home-brew,brew install gnu-sed --default-names但仍然无法使用 sed 命令。我的 $PATH 变量有点混乱,我不知道如何纠正它。

/Users/ishansrivastava/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/local/bin:/opt/local/sbin:/opt/X11/bin:/Library/TeX/texbin

我应该怎么做才能在 Mac 上轻松使用所有 gnu 命令?另外请给我一个命令列表,我必须在这些命令上使用 gnu 命令而不是默认命令,例如。gsedsed不是等

答案1

如上所述在另一个问题中,如果sed使用 Homebrew安装 GNU --with-default-names,则安装为/usr/local/bin/sed.

如果没有--with-default-names,它将被安装为/usr/local/bin/gsed.

如果安装为sed,那么这取决于您执行时获取的二进制$PATH文件。如果您的情况如您所描述的那样,那么 GNU应该优先于本机 macOS 。sedsed$PATHsedsed

sed请注意,如果您之前在同一 shell 会话中在命令行上使用过该命令,则shell 可能已经缓存了该命令的位置。然后,您可以使用rehashinzsh清除该缓存,或打开一个新终端。

当系统提供sed非 GNU 的本机实现时sed,通常最好安装 GNU sed,以免gsed破坏依赖于本机特定行为的现有脚本sed。这就是为什么 macOS 上 Homebrew 的默认行为是将 GNU 安装sedgsed.这也是sed其他 BSD 系统上命名 GNU(以及一般 GNU 工具)的默认方式。

相关内容