我已经使用 Z shell 一段时间了,我开始感到好奇。我在编写自己的函数时偶然发现的一件事是“自动加载”。
根据 zshbuiltins(1) 手册页autoload
是“相当于functions -u
”(有一个例外),它“相当于typeset -f
“(有一个例外)。但是,在查看了 autload 的使用之后,说functions/Prompts/promptinit
,我想我知道它的作用。
我认为自动加载是一种“导入”声明。
但为什么“autoload foo”优于“source bar”呢?我不明白。
如中所述zsh 文档 http://zsh.sourceforge.net/Doc/Release/Functions.html:
函数可以被标记为未定义
使用内置的自动加载(或functions -u
or typeset -fu
)。这样的
函数没有函数体。当。。。的时候
函数首先被执行,shell
使用以下命令搜索其定义
的要素fpath
多变的。 [...]
autoload
允许在没有主体的情况下指定函数,然后在使用时自动加载;)
source
然而,将脚本作为参数,然后executed
在当前会话的环境中 - 即您将保留脚本对环境所做的所有更改,但情况并非如此just执行脚本。
我认为这个功能在拥有时很有用lots函数中的实用程序。它允许faster启动(不需要加载自动加载函数的所有代码)并且可以保留 shell 的内存占用smaller.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)