在我的.bash_profile文件中,我有以下几行代码:
PATHDIRS="
/usr/local/mysql/bin
/usr/local/share/python
/opt/local/bin
/opt/local/sbin
$HOME/bin"
for dir in $PATHDIRS
do
if [ -d $dir ]; then
export PATH=$PATH:$dir
fi
done
然而我尝试将这个命令复制到我的.zshrc文件中,但是$PATH
没有被设置。
首先我在“如果目录存在”函数中放置了echo
语句,发现即使对于明显存在的目录,if语句也会评估为false。
然后我删除了目录存在检查,$PATH
被错误地设置成如下形式:
/usr/bin:/bin:/usr/sbin:/sbin:
/usr/local/bin
/opt/local/bin
/opt/local/sbin
/Volumes/Xshare/kburke/bin
/usr/local/Cellar/ruby/1.9.2-p290/bin
/Users/kevin/.gem/ruby/1.8/bin
/Users/kevin/bin
底层目录中的程序都没有被找到或执行。
我做错了什么吗?
zsh
中进行$PATH
操作的人来说,以下两个额外的快速提示可能会很有用:*(1)* 如果要在前面添加而不是追加,请使用path[1,0]=/path/to/dir
,和 (2) 如果您正在使用 globbing 查找目录,则无需使用 for 循环,只需执行path+=( $PWD/node_modules/**/bin )
即可(也适用于 (1) )。 - unthoughtfoo [1,0] = bar
) 的技巧。真是个爱搞晦涩的家伙! - Alex Gray