我已经使用Z shell 已有一段时间了,我开始感到好奇。在编写自己的函数时,我偶然发现的一件事是“自动加载”。

根据zshbuiltins(1)手册页,autoload“等同于functions -u”(异常(exception)),而“等同于typeset -f”(异常(exception))。但是,在查看autt的functions/Prompts/promptinit使用后,我想我知道它的作用。

我认为自动加载是一种“导入”语句。

但是,为什么“autoload foo”优于“source bar”?我不明白

最佳答案

zsh documentation中所述:



autoload 允许在不带主体的情况下指定函数,然后在使用时自动加载;)

source 接受一个脚本作为参数,然后在当前 session 的环境中将其作为executed-即,您将保留该脚本对环境所做的所有更改,而不仅仅是执行脚本的情况。

我认为在功能中具有很多实用程序的情况下,此功能很有用。它可以加快启动速度(不需要加载自动加载功能的所有代码),并且可以使 shell 的内存占用空间更小。

09-04 18:05