これは、次のオプションが原因AUTO_NAME_DIRSです (デフォルトでは有効になっていません)。
AUTO_NAME_DIRS
Any parameter that is set to the absolute name of a directory
immediately becomes a name for that directory, that will be used
by the `%~' and related prompt sequences, and will be available
when completion is performed on a word starting with `~'.
(Otherwise, the parameter must be used in the form `~param' first.)
つまり、 with AUTO_NAME_DIRSenabled のようなことをする
と、 の略になりproject=/path/to/my/projectます。これにより、そのディレクトリのショートカットとして、またはのようなことができます。~project/path/to/my/projectcd ~projectls -lh ~project
ディレクトリがプロンプトのように表示されたくない場合は~project、プロンプトを に置き換え%~て%d、常にフル パスを表示することができます。
この動作がまったく必要ない場合は、unsetopt AUTO_NAME_DIRS構成で行います。
オプションをオンのままにしたいが、スクリプト内で無効にしてresult名前付きディレクトリを作成しない場合はemulate -LR zsh、スクリプトの先頭で実行します。これにより、スクリプトの実行中にすべてのオプションが一時的にデフォルトにリセットされます。emulate -LR zshこのような奇妙なことが起こらないように、常にスクリプトで使用することをお勧めします。これはunhash -d result、事後に修正するよりも優れています。