谷歌搜索没有显示任何结果。我的意思是:我有一个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