Ish*_*ava 10 command-line osx path homebrew
我正在使用我的 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
Run Code Online (Sandbox Code Playgroud)
我应该怎么做才能在 Mac 上轻松使用所有 gnu 命令?另外请给我一个命令列表,我必须在这些命令上使用 gnu 命令而不是默认值,例如。gsed而不是sed等。
Kus*_*nda 11
正如在另一个问题中提到的,如果sed使用 Homebrew with安装 GNU --with-default-names,那么它安装为/usr/local/bin/sed.
如果没有--with-default-names,它将被安装为/usr/local/bin/gsed.
如果为已安装sed,则取决于你$PATH是什么sed,当你执行二进制被拾起sed。如果您$PATH如您所描述的那样,那么 GNUsed应该优先于本机 macOS sed。
请注意,sed如果您之前在同一 shell 会话中在命令行上使用过该命令,则该 shell 可能已经缓存了该命令的位置。然后您可以使用rehashinzsh清除该缓存,或打开一个新终端。
当一个系统提供了一个原生sed的实现不是GNU sed,则往往是最好安装GNUsed如gsed不打破现有的脚本依赖行为的具体到本机sed。这就是为什么 Homebrew 在 macOS 上的默认行为是将 GNU 安装sed为gsed. 这也是sed在其他 BSD 系统上命名 GNU (以及一般的 GNU 工具)的默认方式。