这是由以下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.)
换句话说,AUTO_NAME_DIRS
只要您执行类似的操作,启用
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
这比事后修复它要好。