Zsh 检测到不安全的补全依赖目录

Zsh detects insecure completion-dependent directories

当我打开终端 Hyper 时收到以下错误消息:

[oh-my-zsh] Insecure completion-dependent directories detected:
drwxrwxr-x  7 dwaynethe2nd  admin  224 Apr 25 15:00 /usr/local/share/zsh
drwxrwxr-x  4 dwaynethe2nd  admin  128 Apr 25 14:53 /usr/local/share/zsh/site-functions

这是 ZSH 的问题,您的shell,而不是 Hyper,您的终端。实际上,我今天早些时候遇到了同样的问题。 this issue on Github 中有一些解决方案,我将在此处引用其中一些,但我建议您遵循 link 并阅读那里的评论。

第一个解决方案是更改有问题的目录的所有权。

在不了解您的环境的情况下,我不会推荐这个,但对于大多数人来说,这将解决问题:

chmod 755 /usr/local/share/zsh
chmod 755 /usr/local/share/zsh/site-functions

第二个解决方案是在你的.zshrc文件中设置ZSH_DISABLE_COMPFIX=true(或引号中的"true"),告诉ZSH不要检查不安全目录。

第三个解决方案,也是为我解决问题的解决方案,是用 -u 标志初始化 compinit。这将使用 compaudit 找到的所有目录,而不检查它们是否存在安全问题。为此,您必须更改 .zshrc 文件或配置自动完成的任何位置。

重新安装 brew 为我解决了这个问题。

卸载 brew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"

安装 brew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

在我的 mac 上,有用的是 运行ning brew doctor

程序告诉我 运行!

的确切命令

执行两个命令解决了我的问题。

  1. sudo chown -R $(whoami) /usr/local/share/zsh /usr/local/share/zsh/site-functions
  2. chmod u+w /usr/local/share/zsh/usr/local/share/zsh/site-functions

对我来说,site-functions 被符号链接到 Homebrew 目录。

/usr/local/share/zsh/site-functions/_brew -> ../../../Homebrew/completions/zsh/_brew

所以唯一可行的方法是直接针对这些目录发出命令。

sudo chown -R $USER /opt/homebrew/completions/zsh/_brew 

或用于地窖

sudo chown -R $USER /opt/homebrew/Cellar/ripgrep/13.0.0/share/zsh/site-functions/_rg

我不确定 运行 brew update 时是否会再次弹出。