Zsh中的命令zmodload和autoload有什么区别?它们似乎做着类似的事情,手册上也没有说太多。例如:
zmodload
autoload
zmodload zsh/terminfo
与
autoload -U zsh/terminfo
ogq8wdun1#
Zsh的手册确实解释了这种差异(尽管不是在一个地方):
$fpath
因为zsh/terminfo is a Zsh-supplied module,你应该使用zmodload来加载它(而不是autoload)。自动加载zsh/terminfo不会做任何事情,因为它不是一个函数,也不是用shell脚本编写的。请注意,在大多数Zsh发行版上(例如macOS中包含的发行版),某些Zsh模块在您尝试使用时会动态加载,因此您甚至不需要zmodload。但是,它没有记录哪些模块,如果您编写的函数或脚本打算用于更广泛的发行版,那么您不能依赖于此。
zsh/terminfo
1条答案
按热度按时间ogq8wdun1#
Zsh的手册确实解释了这种差异(尽管不是在一个地方):
zmodload
加载Zsh本身提供的模块。autoload
声明了一个从$fpath
* 按需 * 加载的函数。函数是用Zsh自己的shell脚本语言编写的。因为
zsh/terminfo
is a Zsh-supplied module,你应该使用zmodload
来加载它(而不是autoload
)。自动加载zsh/terminfo
不会做任何事情,因为它不是一个函数,也不是用shell脚本编写的。请注意,在大多数Zsh发行版上(例如macOS中包含的发行版),某些Zsh模块在您尝试使用时会动态加载,因此您甚至不需要
zmodload
。但是,它没有记录哪些模块,如果您编写的函数或脚本打算用于更广泛的发行版,那么您不能依赖于此。