我的 $ZSH 设置为 /home/goldy/.oh-my-zsh
我有这个文件
# $ZSH/functions/run_after_save
function run_after_save {
# my logic here
}
我的 fpath 确实包含函数文件夹:
$ echo $fpath
# many lines omitted for brevity ...
/home/goldy/.oh-my-zsh/functions
但是当我尝试run_after_save
从脚本调用或直接在终端中输入时,我得到:
$ run_after_save
zsh: command not found: run_after_save
有什么线索吗?
这是我尝试放在$ZSH/functions
文件夹下的第一个功能
与命令和 不同
$path
,一个函数在你的$fpath
. 在调用函数之前,您需要先调用autoload
它:-U
解析函数时防止别名扩展。-k
打开KSH_AUTOLOAD
,看起来您的功能需要。有关详细信息,请参阅https://zsh.sourceforge.io/Doc/Release/Options.html#index-KSHAUTOLOAD。如果您的功能需要KSH_AUTOLOAD
关闭,请-z
改用。或者,您可以只使用您的目录中的
autoload
所有函数functions
,例如,在您的.zshrc
文件中:请注意,要使其正常工作,应编写同一目录中的所有函数以期望
KSH_AUTOLOAD
设置。如果您同时具有ksh
-style 和zsh
-style 函数,那么将它们保存在两个单独的目录中会更简单,因此您可以autoload
将前者-k
与-z
. (或者更好的是,在没有KSH_AUTOLOAD
的情况下编写你的函数,这样你就可以随时使用-z
。)