首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >zsh-加载‘zsh: compinit:’时出现的完成错误

zsh-加载‘zsh: compinit:’时出现的完成错误
EN

Stack Overflow用户
提问于 2021-12-21 10:16:41
回答 3查看 3.4K关注 0票数 1

在尝试从oh迁移到更轻的zsh配置之后,我安装了zsh-completions插件,它在通过自制安装时需要具备以下功能:

代码语言:javascript
复制
if type brew &>/dev/null; then
    fpath=${HOMEBREW_PREFIX}/share/zsh-completions:$fpath

    autoload -Uz compinit
    compinit
fi

问题是它不能正常工作,因为它找不到compinit,我得到了下一个错误:

代码语言:javascript
复制
zsh: compinit: function definition file not found
EN

回答 3

Stack Overflow用户

发布于 2021-12-21 10:27:22

在看到使用echo $fpath设置的值之后,我意识到自制的警告建议有错误的代码,并且它不包括compinit函数所在的文件夹。

修复可以很容易地完成,可以替换:

代码语言:javascript
复制
fpath=${HOMEBREW_PREFIX}/share/zsh-completions:$fpath

使用

代码语言:javascript
复制
export fpath=(${HOMEBREW_PREFIX}/share/zsh-completions $fpath)

解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2022-04-14 03:28:50

也许是Lmod造成了这个问题。参见本文:Lmod常见问题

如果我的启动外壳是bash或tcsh,并且我启动了zsh,为什么我会收到这样的消息:“/etc/ zsh /zshrc:48: compinit: function” Lmod支持zsh和ksh。这两个shell都使用shell var。但以非常不同的方式。问题是有些bash或tcsh用户运行ksh脚本并需要访问模块命令。在K-shell中,env。var。FPATH是导出的,是找到模块shell函数的路径。Z-shell还使用FPATH来指向compinit等工具。通过导出FPATH,Z-shell不改变FPATH的值,这意味着zsh用户无法找到使其工作的所有函数。解决方案是在启动文件中“exec zsh”之前添加“unset FPATH”。

在我的例子中,我必须卸载Lmod,以确保直接ssh和VSCode终端都正确地运行zsh完成。

票数 1
EN

Stack Overflow用户

发布于 2022-09-10 09:16:14

对我来说,这是一种特权,在修复它们之后,它会运行得很好。

代码语言:javascript
复制
sudo chmod a+x /usr/local/lib/zsh
sudo chmod a+r /usr/local/lib/zsh
sudo chmod a+r /usr/local/lib/zsh/5.9
sudo chmod a+r /usr/local/lib/zsh/5.9/zsh
sudo chmod a+x /usr/local/lib/zsh/5.9
sudo chmod a+x /usr/local/share/zsh
sudo chmod a+r /usr/local/share/zsh
sudo chmod a+xr /usr/local/share/zsh/5.9
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70433815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档