zmodload命令和Zsh 中的有什么区别autoload?他们似乎在做类似的事情,并且手册上没有说太多。例子:
zmodload zsh/terminfo
Run Code Online (Sandbox Code Playgroud)
与
autoload -U zsh/terminfo
Run Code Online (Sandbox Code Playgroud)
Zsh 的手册确实解释了其中的差异(尽管不是在一处):
\nzmodload加载 Zsh 本身提供的模块。模块是用 C 编程语言编写的。autoload声明一个根据需要从您的$fpath. 函数是用Zsh\xe2\x80\x99s自己的shell脚本语言编写的。由于zsh/terminfo是 Zsh 提供的模块,因此您应该使用zmodload来加载它(而不是 autoload)。自动加载zsh/terminfo不会执行任何操作,因为它不是一个函数,并且它不是用 shell 脚本编写的。
请注意,在大多数 Zsh 发行版(例如 macOS 中包含的发行版)上,某些 Zsh 模块在您尝试使用它们时会动态加载,因此您甚至不需要\xe2\x80\x99 zmodload。但是,它没有记录哪些内容,并且如果您正在编写旨在更广泛分发的函数或脚本,那么您不能依赖于此。