我已经使用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 的内存占用空间更小。