I have been using the Z shell for a while now, and I am starting to be curious. One thing I have stumbled at when writing my own functions is \"autoload\".
According to
As stated in the zsh documentation:
A function can be marked as undefined using the autoload builtin (or
functions -u
ortypeset -fu
). Such a function has no body. When the function is first executed, the shell searches for its definition using the elements of thefpath
variable. [...]
autoload
allows for functions to be specified without a body which then get automatically loaded when used ;)
source
however takes as argument a script which is then executed
in the environment of the current session - i.e. you will retain all changes the script does to the environment, which is not the case when just executing the script.
I think this feature is beneficial when having lots of utilities in functions. It allows for faster startup (all the code for the autoload functions need not be loaded) and may keep the memory footprint of the shell smaller.