Как записать cd в названный каталог, если команда не найдена?

Когда я печатаю то, что не является zsh builtin, и никакой такой исполняемый файл не найден из $ PATH, zsh просто сообщает об ошибке. Вместо этого я хотел бы, чтобы zsh проверял, существует ли именованный каталог с этим именем и cd.

Я попытался определить функцию command_not_found_handler (), но это не сработало, так как оно вызывает под-оболочку для выполнения этой функции, и, следовательно, изменение каталога не отражается в реальной оболочке.

Возможно ли это с некоторыми настройками или новой (полезной?) Функцией?

Я думаю, вы просто описали AUTO_CD .

В руководстве zsh указано:

Если внешняя команда не найдена, но существует функция command_not_found_handler оболочка выполняет эту функцию со всеми аргументами командной строки. (…) Обратите внимание, что обработчик выполняется в подоболочке forked для выполнения внешней команды, поэтому изменения в каталогах, параметры оболочки и т. Д. Не влияют на основную оболочку.

Таким образом, вы не можете делать то, что вы описали, за исключением исправления zsh.

Вы можете создать функцию для каждого из ваших названных каталогов.