Weird behaviour with zsh PATH

时光总嘲笑我的痴心妄想 提交于 2020-01-06 02:42:26

问题


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 variable to something like

export PATH="$PATH:~/.composer/vendor/bin"

Try echo $PATH in terminal, the result is as expected (contained ~/.composer/vendor/bin). Then try executing a binary from ~/.composer/vendor/bin, It'll always return me "zsh: command not found" error.

Try switching to bash, echo $PATH is also as expected, have the same result as zsh shell. Try executing a binary from ~/.composer/vendor/bin, no problem found. Seem the PATH var is acting well on the bash shell.

What's wrong with my zsh shell?

Thanks


回答1:


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.)




回答2:


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 new ls 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 command rehash, which actually empties the command hash table, so that finding commands starts again from scratch. Users of csh may remember having to type rehash quite a lot with new commands: it's not so bad in zsh, 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"



来源:https://stackoverflow.com/questions/29820315/weird-behaviour-with-zsh-path

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!