我设置了这样一个zsh别名:
alias sed="/usr/local/Cellar/gnu-sed/4.8/bin/gsed"我可以通过运行来确认它是有效的:
type sed
sed is an alias for /usr/local/Cellar/gnu-sed/4.8/bin/gsed但是,如果我将完全相同的代码、别名设置并键入sed,然后在文件名测试下输入一个脚本并运行它,将得到默认sed:
zsh test
sed is /usr/bin/sed我也尝试过扩展路径,但还是得到了同样的东西,令我困惑.
发布于 2022-08-05 21:04:36
如果您想在所有未来的脚本中使用命令词sed作为gsed (如果您真的想这样做,您可以这样做),在brew install gsed安装结束时,Homebrew有关于如何实现这一点的信息。
GNU "sed" has been installed as "gsed".
If you need to use it as "sed", you can add a "gnubin" directory
to your PATH from your bashrc like:
PATH="/opt/homebrew/opt/gnu-sed/libexec/gnubin:$PATH"虽然您询问的是zsh,所以我假设您已经升级到至少macOS Catalina,并且现在尝试使用zsh而不是bash,所以这意味着我建议将建议的行从Homebrew到~/.zshrc而不是~/.bashrc。
有些事情已经改变了,默认的HomebreInstallation目录是现在,您可以使用命令brew --prefix来获取您的目录,现在它是/opt/homebrew,而不是旧的/usr/local/Cellar。
现在,您的sed应该以gsed的形式在所有脚本中运行。
附加说明
您的代码涉及别名的原因不像预期的那样工作,还有一些额外的注释需要删除(对zsh和bash):
脚本文件中的definition).
发布于 2022-08-07 20:03:40
唯一对我起作用的就是创建一个函数。在那之后,当我调用help参数时,sed被gsed压倒了。
#!/bin/bash
sed () {
/usr/local/Cellar/gnu-sed/4.8/bin/gsed "$@"
}
sed --helphttps://stackoverflow.com/questions/73254636
复制相似问题