我想知道启动 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 实例,并且自动执行环境中的数据通常会让我感到紧张。