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
程序告诉我 运行!
的确切命令
执行两个命令解决了我的问题。
sudo chown -R $(whoami) /usr/local/share/zsh /usr/local/share/zsh/site-functions
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
时是否会再次弹出。
当我打开终端 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
程序告诉我 运行!
的确切命令执行两个命令解决了我的问题。
sudo chown -R $(whoami) /usr/local/share/zsh /usr/local/share/zsh/site-functions
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
时是否会再次弹出。