これは、次のオプションが原因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_DIRS
enabled のようなことをする
と、 の略になりproject=/path/to/my/project
ます。これにより、そのディレクトリのショートカットとして、またはのようなことができます。~project
/path/to/my/project
cd ~project
ls -lh ~project
ディレクトリがプロンプトのように表示されたくない場合は~project
、プロンプトを に置き換え%~
て%d
、常にフル パスを表示することができます。
この動作がまったく必要ない場合は、unsetopt AUTO_NAME_DIRS
構成で行います。
オプションをオンのままにしたいが、スクリプト内で無効にしてresult
名前付きディレクトリを作成しない場合はemulate -LR zsh
、スクリプトの先頭で実行します。これにより、スクリプトの実行中にすべてのオプションが一時的にデフォルトにリセットされます。emulate -LR zsh
このような奇妙なことが起こらないように、常にスクリプトで使用することをお勧めします。これはunhash -d result
、事後に修正するよりも優れています。