How to disable "auto cd" in zsh with oh-my-zsh
Thats three questions in one ;-)
AUTO_CD Option and howto find it
First of all the option you are looking for is AUTO_CD.
You can easily find it by looking up man zshoptions
. Use your pagers search function, usually you press / and enter the keyword. With n you jump to the next occurrence. This will bring up the following:
[..]
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.
[..]
The option can be unset using unsetopt AUTO_CD
.
Turning it properly off
You are using oh-my-zsh which is described as
"A community-driven framework for managing your zsh configuration" Includes 120+ optional plugins (rails, git, OSX, hub, capistrano, brew, ant, macports, etc), ...
So the next thing is to find out, how to enable/disable options according to the framework.
The readme.textile file states that the prefered way to enable/disable plugins would be an entry in your .zshrc: plugins=(git osx ruby)
Find out which plugin uses the AUTO_CD option. As discovered from the manpage it can be invoked via the -J switch or AUTO_CD. Since oh-my-zsh is available on github, searching for it will turn up the file lib/theme-and-appearance.zsh
.
If you don't want to disable the whole plugin "theme-and-appearance", put a unsetopt AUTO_CD
in your .zshrc. Don't modify the files of oh-my-zsh directly, because in case you are updating the framework, your changes will be lost.
Why executables are not invoked directly
Your third question is howto execute a binary directly:
You have to execute your binary file via a path, for example with a prefixed ./
as in ./do-something
. This is some kind of a security feature and should not be changed.
hing of plugging in an USB stick, mounting it and having a look on it with ls
. If there is a executable called ls
which deletes your home directory, everything would be gone, since this would have overwritten the order of your $PATH.
If you have commands you call repeatedly, setting up an alias in your .zshrc would be a common solution.
This worked for me:
unsetopt autocd