当我输入的内容既不是 zsh 内置命令,并且从 $PATH 中找不到此类可执行文件时,zsh 只会报告错误。相反,我希望 zsh 检查是否存在具有该名称的命名目录并 cd 进入其中。
我尝试定义 command_not_found_handler() 函数,但它不起作用,因为它分叉了一个子 shell 来执行该函数,因此目录更改不会反映在实际 shell 中。
通过某些设置或新的(有用的?)功能已经可以做到这一点吗?
答案1
这zsh 手册状态:
如果未找到外部命令但存在函数,则
command_not_found_handler
shell 会使用所有命令行参数执行该函数。 (…) 请注意,处理程序是在为执行外部命令而分叉的子 shell 中执行的,因此对目录、shell 参数等的更改对主 shell 没有影响。
因此,除了修补 zsh 之外,您无法执行您所描述的操作。
您可以为每个命名目录创建一个函数。
答案2
我想你刚刚描述了自动光盘。