TL; DR

TL; DR

谷歌搜索没有显示任何结果。我的意思是:我有一个x在我的路径中命名的二进制文件(不是当前文件夹,但它位于PATH),并且当前工作目录中同名的文件夹。如果我输入x,我希望执行二进制文件,但它会 cd 到该文件夹​​中。我该如何解决?

答案1

TL; DR

将此行添加到您的~/.zshrc

unsetopt autocd

AUTO_CD 选项以及如何找到它

首先,您要寻找的选项是 AUTO_CD。您可以通过查找“man zshoptions”轻松找到它。使用寻呼机搜索功能,通常您按下/并输入关键字。随着n您跳转到下一个发生的地方。这将出现以下内容:
[..]
   Changing Directories
       AUTO_CD (-J)
              If  a  command is issued that can't be executed as a normal command, and the command is the name of a directory, perform the cd command to that directory.
[..]

可以使用 取消设置该选项unsetopt AUTO_CD

正确关闭它

您正在使用 oh-my-zsh,其描述为

“用于管理 zsh 配置的社区驱动框架”包括 120 多个可选插件(rails、git、OSX、hub、capistrano、brew、ant、macports 等),...

因此,接下来的事情是找出如何根据框架启用/禁用选项。

readme.textile 文件指出启用/禁用插件的首选方法是 .zshrc 中的条目:plugins=(git osx ruby) 找出哪个插件使用 AUTO_CD 选项。正如从联机帮助页中发现的,它可以通过 -J 开关或 AUTO_CD 调用。由于 oh-my-zsh 在 github 上可用,因此搜索它会出现该文件lib/theme-and-appearance.zsh。如果您不想禁用整个插件“主题和外观”,请unsetopt AUTO_CD在 .zshrc 中添加一个。不要直接修改 oh-my-zsh 的文件,因为如果你更新框架,你的更改将会丢失。

为什么不直接调用可执行文件

第三个问题是如何直接执行二进制文件:您必须通过路径执行二进制文件,例如使用前缀“./”,如“./do-something”。这是某种安全功能,不应更改。插入 USB 记忆棒,安装它并使用“ls”查看它。如果有一个名为“ls”的可执行文件删除您的主目录,那么所有内容都会消失,因为这会覆盖您的 $PATH 的顺序。

如果您有重复调用的命令,在 .zshrc 中设置别名将是一种常见的解决方案。

答案2

这对我有用:

unsetopt autocd

相关内容