Zsh 中的“autoload”和“autoload -U”有什么区别?

sha*_*ker 6 zsh function

autoload -U和plain 和有什么不一样autoload

例如,这里建议运行:

autoload -U run-help
autoload run-help-git
autoload run-help-svn
autoload run-help-svk
unalias run-help
alias help=run-help
Run Code Online (Sandbox Code Playgroud)

为什么-U只在第一行?

小智 8

是的,您确实-U经常看到建议,通常与-z. 它没有记录在run-helpfor 中autoload,但在zshmisc.

在那里它指出:

如果为 autoload 内置函数或其等效项提供选项 -U,则读取期间通常的别名扩展将被抑制。建议使用 zsh 发行版提供的函数。请注意,对于使用 zcompile 内置命令预编译的函数,在创建 .zwc 文件时必须提供标志 -U,因为相应的信息被编译到后者中。

我将其读作“无视别名”。这-z似乎是为了避免 Ksh 主义。我只是记住-Uz并通常将它们添加到任何自动加载中。也许是一个有价值的别名:alias al=’autoload -Uz’.

另见:https : //stackoverflow.com/questions/12570749/zsh-completion-difference

  • @Niing“-z”选项加载函数就像未设置“KSH_FUNCTIONS”选项一样,“-k”选项加载函数就像设置了一样,无论是否设置了该选项。也就是说,“-z”禁用“Ksh 式”自动加载,而“-k”启用它。手册[第 9.1 节 - “自动加载函数”](https://zsh.sourceforge.io/Doc/Release/Functions.html) 中描述了两者之间的区别。Ksh 风格基本上只是文件的“源”,而 Zsh 风格有一些额外的行为,允许函数定义文件也用作独立的可执行脚本。 (2认同)
  • `autoload` 内置本身及其标志记录在 [第 17 节 - “Shell 内置命令”](https://zsh.sourceforge.io/Doc/Release/Shell-Builtin-Commands.html) 中,并且 `KSH_AUTOLOAD ` 选项记录在 [第 16.2.10 节 - “Shell 模拟](https://zsh.sourceforge.io/Doc/Release/Options.html) 中。 (2认同)