Z Shell"autoload"内置 - 有什么好处?

Mit*_*tro 24 zsh

我一直在使用Z shell一段时间,我开始变得好奇.在编写自己的函数时,我偶然发现的一件事是"自动加载".

根据zshbuiltins(1),手册页autoload是"等价于functions -u"(有例外),它"等同于typeset -f"(有例外).但是,在查看了autlooad的使用后functions/Prompts/promptinit,我想我知道它的作用.

我认为autoload是一种"导入"声明.

但为什么"autoload foo"优于"源栏"呢?我不明白.

Mar*_*gen 27

zsh文档中所述:

可以使用自动加载内置(或functions -utypeset -fu)将函数标记为未定义 .这样的功能没有身体.首次执行该函数时,shell使用fpath变量的元素搜索其定义.[...]

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

source然而,把参数作为一个脚本,然后executed在当前会话的环境-即您将保留所有更改脚本执行的环境,这是不是这种情况时,只需执行脚本.

我认为在功能中使用大量实用程序时,此功能非常有用.它允许更快的启动(不需要加载自动加载功能的所有代码)并且可以保持壳的内存占用更小.

  • 啊,更快的启动;没想到。谢谢! (2认同)