I just encourage a weird problem with zsh today.
My environment is Mac OS X Yosemite, zsh 5.0.5 (x86_64-apple-darwin14.0)
In .zshrc, I have manually set the PATH
Type rehash
to pick-up $PATH
changes.
From the zsh user guide:
The way commands are stored has other consequences. In particular,
zsh
won't look for a new command if it already knows where to find one. If I put a newls
command in/usr/local/bin
in the above example, zsh would continue to use/bin/ls
(assuming it had already been found). To fix this, there is the commandrehash
, which actually empties the command hash table, so that finding commands starts again from scratch. Users ofcsh
may remember having to typerehash
quite a lot with new commands: it's not so bad inzsh
, because if no command was already hashed, or the existing one disappeared,zsh
will automatically scan the path again; furthermore,zsh
performs a rehash of its own accord if$path
is altered. So adding a new duplicate command somewhere towards the head of$path
is the main reason for needing rehash.
EDIT However @WilliamPursell could be onto something with his comment:
note that "composer" != ".composer"
Try using $HOME
instead of ~
. In many situations, shells do not expand ~
when you expect them to and it is usually better to use $HOME
. ~
is really only intended to be a short cut for interactive use. (The only case I can recall where ~
was preferred was in a .gitalias, where ~ was expanded and variables were not.)