我正在尝试掌握 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。