我正在使用哦我的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 命令而不是默认命令,例如。gsed
而sed
不是等
答案1
如上所述在另一个问题中,如果sed
使用 Homebrew安装 GNU --with-default-names
,则安装为/usr/local/bin/sed
.
如果没有--with-default-names
,它将被安装为/usr/local/bin/gsed
.
如果安装为sed
,那么这取决于您执行时获取的二进制$PATH
文件。如果您的情况如您所描述的那样,那么 GNU应该优先于本机 macOS 。sed
sed
$PATH
sed
sed
sed
请注意,如果您之前在同一 shell 会话中在命令行上使用过该命令,则shell 可能已经缓存了该命令的位置。然后,您可以使用rehash
inzsh
清除该缓存,或打开一个新终端。
当系统提供sed
非 GNU 的本机实现时sed
,通常最好安装 GNU sed
,以免gsed
破坏依赖于本机特定行为的现有脚本sed
。这就是为什么 macOS 上 Homebrew 的默认行为是将 GNU 安装sed
为gsed
.这也是sed
其他 BSD 系统上命名 GNU(以及一般 GNU 工具)的默认方式。