use*_*428 6 homebrew zsh homebrew-cask macos-sierra
在我的 Mac 上安装 Homebrew 和 Homebrew-Cask(作为管理员,用户 ID 为“admin”,运行 MacOS 10.12.6)后,我收到错误消息
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
Run Code Online (Sandbox Code Playgroud)
每次我启动zsh。投资 compaudit 的问题,我发现提到了几个不安全的目录,最与 Homebrew 相关 - 例如/usr/local/share/zsh/site-functions. 此目录及其条目具有访问权限 0755,这应该没问题,但是 - 例如 - 条目
/usr/local/share/zsh/site-functions/_brew
Run Code Online (Sandbox Code Playgroud)
这是 Homebrew 文件的符号链接,它定义了 zsh 的完成,拥有所有者admin。我的猜测是 zsh 想在这里看到用户root。
如果这是 Linux,我会简单地将这些文件的所有者更改为root,或者更确切地说,我会首先以 root 身份进行整个安装。然而,在 MacOS 10.12 中,他们甚至不允许“管理员”完全控制系统,虽然我可以以管理员身份登录,但我什至不知道 root 的密码。
这个问题有聪明的解决方案吗?或者,我们能否以某种方式教 zsh compinit 永远不要问这个烦人的问题,要么接受不安全的目录,要么跳过它们?或者最好以管理员身份登录,然后简单地从 中删除有问题的符号链接site-functions?我可以忍受一个不知道如何处理brew命令的完成系统。
小智 6
我的 Mac 运行的是 macOS Monterey v12.1。
brew install zsh-completions经过多次尝试 stackoverflow 答案后,我收到了此消息,我用source .zshrc和解决了这个问题compaudit | xargs chmod g-w,o-w。
我希望你的问题也能得到解决
我发现错误消息是通过调用compinitmy生成的.zshrc,并且可以通过传递选项将其关闭-i,即
compinit -i
Run Code Online (Sandbox Code Playgroud)
虽然这解决了问题,但 Ortomala Lokni 提出的 Homebrew 应该使用用户权限安装的论点也值得考虑 - 只是 Homebrew 不允许我这样做;但这是一个单独线程的主题。