Zsh Hook 函数定义作为参数

Zsh Hook 函数定义作为参数

我想知道启动 zsh 时是否可以将钩子函数定义为参数或 env var,而不是在 .zshrc 或提示符中定义它。

例如 ;

zsh -F preexec() { date } -F chpwd() { pwd }

多谢

答案1

除非您在 中添加支持代码~/.zshrc,否则不容易,例如:

if [[ -o interactive && $1 = eval ]]; then
   "$@"; argv=()
fi

然后调用zsh为:

zsh -s eval 'preexec() date; chpwd() pwd'

例如。

与环境变量相同:

if (($+ZSH_STARTUP_CODE)); then
  eval " $ZSH_STARTUP_CODE"
fi

并调用zsh为:

ZSH_STARTUP_CODE='preexec() date; chpwd() pwd' zsh

但请注意,env 变量是继承的,因此它会影响在该环境中启动的所有 zsh 实例,并且自动执行环境中的数据通常会让我感到紧张。

相关内容