美文网首页Linux 琐事之123
zsh中修改fpath后不生效

zsh中修改fpath后不生效

作者: Fengya | 来源:发表于2018-07-04 19:07 被阅读66次

    问题描述

    最近为了方便使用自己写的脚本,想给脚本添加自动补全机制。
    zsh中自动补全机制还是很方便的,创建好补全completion脚本之后放在全局变量$fpath中的某一个文件夹中即可。
    但是尝试自己修改$fpath,将本地的目录加入其中,并没有生效。给文件创建链接到现有的目录中就能成功使用。
    系统环境为MacOS,使用了Iterms2+zsh+oh-my-zsh

    问题解决

    首先可以还是按照大多数开源工具的做法,创建一个链接到某个$fpath中,例如:

    ln -s "${your file name}" "/usr/local/share/zsh/site-functions"
    

    或者修改$fpath的时候应该放在~/.zshrcsource $ZSH/oh-my-zsh.sh这句话前面。

    再或者,在~/.zshrc中修改完$fpath之后添加:

    compinit
    

    手动再初始化一下comp统。

    问题原因

    zsh中修改了fpath之后,需要执行一下compinit才能初始化自动补全系统,并在~中生成一个名为~/.zcompdump的文件用以缓存命令和补全函数之间的对应关系。

    oh-my-zsh中已经在oh-my-zsh.sh中调用过了这个命令,需要再调用一次这个命令来使修改后的fpath生效。

    oh-my-zsh.sh脚本本身也是在~/.zshrc中调用的,所以在调用它之前来设置变量也可以解决这个问题。

    相关文章

      网友评论

        本文标题:zsh中修改fpath后不生效

        本文链接:https://www.haomeiwen.com/subject/hylyuftx.html