如何使用oh-my-zsh禁用zsh中的“ auto cd”


29

谷歌搜索没有显示任何结果。这就是我的意思:x我的路径中有一个二进制文件(不是当前文件夹,但在中PATH),并且在当前工作目录中还有一个具有相同名称的文件夹。如果输入x,我希望二进制文件执行,但将其CD放入该文件夹。我该如何解决?

Answers:


46

那就是三个问题合一;-)

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的文件,因为如果要更新框架,所做的更改将丢失。

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

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

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


4
非常感谢你!我需要的是unsetopt auto_cd线(我也明确提到,该可执行文件在我的道路,虽然;然而,在解释可能帮助其他用户理出头绪)。
Gabi Purcaru 2014年

感谢您提供详尽的答案,并提供有关如何找到信息的详细信息(从而帮助其他人将来自己找到类似的信息)。
斜线

2
您的最后一段没有意义。OP正在询问其PATH环境变量中的二进制文件,他们希望优先于autocd。这与Shell脚本无法在未指定./或的情况下从路径运行可执行文件无关/
Qix

自述文件的第一个链接不起作用。了 此外,OMZ lib目录与。无关,plugins关于这个问题,正如您所说,正确的命令是unsetopt
Timo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.