这是什么意思,我该如何修复它?
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
运行compaudit
命令会返回以下内容:
There are insecure directories:
/usr/local/share/zsh/site-functions
这是什么意思,我该如何修复它?
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
运行compaudit
命令会返回以下内容:
There are insecure directories:
/usr/local/share/zsh/site-functions
运行 compaudit
命令,它会列出它认为不安全的目录
sudo chown -R 用户名:根目录 target_directory
sudo chmod -R 755 target_directory
sudo chown -R $(whoami):staff /usr/local
。homebrew
信息的答案: https://docs.brew.sh/Shell-Completion#configuring-completions-in-zsh
为了在 zsh 中使用 Homebrew 的补全功能,您需要在初始化 zsh 的补全工具之前将 Homebrew 管理的 zsh 站点函数添加到 FPATH 中。 将以下内容添加到您的 ~/.zshrc 文件中即可:if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh/site-functions:$FPATH
autoload -Uz compinit
compinit
fi
在调用 compinit 之前必须执行此操作。
这解决了我的问题,并且没有手动更改所有权或其他操作。
我的建议是运行compaudit,然后仅修复审核发现的目录的权限。 确保所识别的目录对组或其他用户没有写权限。
# There are insecure files: /usr/share/zsh/vendor-completions/_code
# sudo ls -alh
-rw-r--r-- 1 131 142 2.6K 2019-10-10 16:28 _code
我只是将该文件的用户和组更改回root
,问题就消失了。 我没有需要更改任何权限,并且除非了解问题的根本原因,否则不建议这样做。
sudo chown root _code && sudo chgrp root _code
在将131
和142
切换回root
后,来自zsh的此错误消息消失了。
我在运行google-cloud-sdk
安装脚本后遇到了这个问题,该脚本通过在.zshrc
中添加条目来为Shell添加命令补全功能。
按照Homebrew配置zsh补全的指导是有帮助的。
此外,如果在尝试加载这些补全时收到“zsh compinit: insecure directories”警告,则需要运行此命令:
chmod -R go-w "$(brew --prefix)/share"
我尝试了列出的所有解决方案都没有用。最终,我卸载并重新安装Homebrew,这解决了问题。卸载说明可以在这里找到:http://osxdaily.com/2018/08/12/how-uninstall-homebrew-mac/
使用compinit
向脚本的输入流发送一个y
字符,以自动回答“忽略不安全的目录和文件并继续 [y]”还是“中止compinit [n]?”的问题。
echo "y" > source <GOOGLECLOUDSDK>/completion.zsh.inc
当以下情况发生时,此解决方案非常有用:
注意:它不能解决问题,只是隐藏警告(与其他答案不同,那些答案涉及删除'组写入访问权限'或'更改所有权为root')。
.zshrc
文件并在文件开头放置此行ZSH_DISABLE_COMPFIX=true
。 - codeman48