Bash命令路径的缓存

升级到OS X 10.9后,系统默认的python已经升级到2.7.5了,所以以前通过ports安装的2.7.3版本就没有必要了。于是就使用port卸载了。

sudo port uninstall --follow-dependents python27

完整的问题描述在这。

最后通过Google找到答案,原来Bash会对命令的路径解析进行缓存。

通过hash -l命令可以查看当前所有缓存的命令路径:

? ~ $ hash -lbuiltin hash -p /Users/adyliu/bin/hosts hostsbuiltin hash -p /usr/bin/which whichbuiltin hash -p /usr/bin/host hostbuiltin hash -p /usr/bin/python2.6 python2.6builtin hash -p /usr/bin/python2.7 python2.7builtin hash -p /usr/bin/locate locatebuiltin hash -p /usr/bin/python2.5 python2.5builtin hash -p /usr/bin/du dubuiltin hash -p /bin/cat catbuiltin hash -p /usr/bin/vim vimbuiltin hash -p /usr/bin/sudo sudobuiltin hash -p /usr/bin/java javabuiltin hash -p /usr/bin/uname unamebuiltin hash -p /opt/local/bin/python2 python2builtin hash -p /usr/local/bin/python3 python3builtin hash -p /usr/bin/man manbuiltin hash -p /usr/bin/less lessbuiltin hash -p /opt/local/bin/otool otoolbuiltin hash -p /bin/ls lsbuiltin hash -p /usr/bin/python python

可通过如下命令之一清除缓存:

hash -rhash -d python2.7

Bash 为了提高命令的解析速度,将解析过的命令的全路径保存在hash表中,因此下次执行的时候就无需进行再次解析。

hash 有如下几个参数:

-d [name]… 删除某个命令的路径缓存-r 删除所有命令的路径缓存-t [name] 列出某个命令的缓存路径(如果有的话)-l 列出全部的路径缓存

可使用 help hash 来查看帮助,不过文档没有格式化,比较难看。

Bash命令路径的缓存

相关文章:

你感兴趣的文章:

标签云: