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

时间:2010-12-20 19:35:26

标签: zsh

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

根据zshbuiltins(1)手册页autoload“等同于functions -u”(有例外),“等同于typeset -f”(有例外)。但是,在查看autlooad的使用后,比如functions/Prompts/promptinit,我想我知道它的用途。

我认为autoload是一种“导入”声明。

但为什么“autoload foo”优于“源栏”?我不明白。

1 个答案:

答案 0 :(得分:26)

zsh documentation中所述:

  

可以将函数标记为未定义   使用autoload内置(或   functions -utypeset -fu)。这样   一个功能没有身体。当。。。的时候   函数首先执行,shell   使用。搜索其定义   fpath变量的元素。 [...]

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

source 然后在当前会话的环境中将脚本作为executed作为参数 - 即您将保留脚本对环境所做的所有更改, 只是执行脚本时不是这种情况。

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