shell Zsh中zmodload与自动加载之间的差异

wmomyfyw  于 2023-02-09  发布在  Shell
关注(0)|答案(1)|浏览(171)

Zsh中的命令zmodloadautoload有什么区别?它们似乎做着类似的事情,手册上也没有说太多。例如:

zmodload zsh/terminfo

autoload -U zsh/terminfo
ogq8wdun

ogq8wdun1#

Zsh的手册确实解释了这种差异(尽管不是在一个地方):

  • zmodload加载Zsh本身提供的模块。
  • autoload声明了一个从$fpath * 按需 * 加载的函数。函数是用Zsh自己的shell脚本语言编写的。

因为zsh/terminfo is a Zsh-supplied module,你应该使用zmodload来加载它(而不是autoload)。自动加载zsh/terminfo不会做任何事情,因为它不是一个函数,也不是用shell脚本编写的。
请注意,在大多数Zsh发行版上(例如macOS中包含的发行版),某些Zsh模块在您尝试使用时会动态加载,因此您甚至不需要zmodload。但是,它没有记录哪些模块,如果您编写的函数或脚本打算用于更广泛的发行版,那么您不能依赖于此。

相关问题