为什么 zsh 自动加载在脚本中不起作用?

为什么 zsh 自动加载在脚本中不起作用?

我正在尝试掌握 zsh 中的自动加载函数。我已将存储函数的文件夹 (~/.zfuncs) 添加到 fpath,并添加了一个测试函数

# ~/.zfuncs/myfunction
echo "Hello world!"

当我在控制台中自动加载它时,它工作正常:

stephanie% autoload -Uz myfunction
stephanie% myfunction
Hello world!

当我尝试在脚本中运行它时,它不起作用:

#!/usr/bin/env zsh
# ~/scripts/test-myfunction.sh

autoload -Uz myfunction
myfunction

运行脚本会产生错误:

stephanie% zsh ~/scripts/test-myfunction.sh
myfunction:5: myfunction: function definition file not found

如果我在脚本开头添加以下行,它就会起作用:

source ~/.zshrc

我遗漏了什么或者做错了什么?

答案1

我找到了答案,根据答案。我需要在我的 .zshenv 文件而不是 .zshrc 文件中将我的文件夹添加到 fpath 的行,因为当它是一个脚本时,它不是一个交互式 shell。

相关内容