如果找不到命令,如何 cd 进入指定目录?

如果找不到命令,如何 cd 进入指定目录?

当我输入的内容既不是 zsh 内置命令,并且从 $PATH 中找不到此类可执行文件时,zsh 只会报告错误。相反,我希望 zsh 检查是否存在具有该名称的命名目录并 cd 进入其中。

我尝试定义 command_not_found_handler() 函数,但它不起作用,因为它分叉了一个子 shell 来执行该函数,因此目录更改不会反映在实际 shell 中。

通过某些设置或新的(有用的?)功能已经可以做到这一点吗?

答案1

zsh 手册状态:

如果未找到外部命令但存在函数,则command_not_found_handlershell 会使用所有命令行参数执行该函数。 (…) 请注意,处理程序是在为执行外部命令而分叉的子 shell 中执行的,因此对目录、shell 参数等的更改对主 shell 没有影响。

因此,除了修补 zsh 之外,您无法执行您所描述的操作。

您可以为每个命名目录创建一个函数。

答案2

我想你刚刚描述了自动光盘

相关内容