博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
注意linux bash缓存
阅读量:7059 次
发布时间:2019-06-28

本文共 801 字,大约阅读时间需要 2 分钟。

在已经运行的系统中更改了某些以前存在于PATH环境变量所指明的目录中的程序的存放目录后可能出现No such file or directory的错误提示。

比如,以前python存放于/usr/bin/下,现在临时将/usr/bin/python删除,在/usr/local/bin下生成python,按照正常逻辑,此时直接执行python的话,会找到/usr/local/bin/python,因为/usr/local/bin也在环境变量PATH中,但却会出现bash: /usr/bin/python: No such file or directory
为何?
具体原因如下:
bash会保存一个从开机运行以来曾执行过得命令,而不是每次都搜索$PATH,如果在上次执行python命令之后更改了python的实际位置,则bash还会去按照原有hash table里面记录的路径去执行,但因为原执行文件已不存,所以会报出No such file or directory的错误提示。
通过执行 hash 命令可以很容易看出:
root@ubuntu:~$ hash
hits    command
   3    /usr/bin/which
   2    /usr/bin/file
   4    /usr/bin/sudo
   1    /bin/mv
   1    /usr/bin/whereis
   7    /usr/bin/python
root@ubuntu:~$
解决方法:
解决方法也很简单,重置bash 的hash table即可,比如执行 hash -d python即可删除hash table中python的记录,如果再次执行python的时候,bash将搜索$PATH得到新的python路径

转载于:https://www.cnblogs.com/Jerryshome/archive/2012/12/27/2836072.html

你可能感兴趣的文章
基础知识→设计模式
查看>>
Chrome 启动参数列表
查看>>
Django中Form的Textarea字段
查看>>
CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化
查看>>
jQuery遮罩层登录对话框
查看>>
介绍对称加密的另一个算法——PBE
查看>>
Python学习--03变量类型
查看>>
ASP.NET中Session的sessionState 4种mode模式
查看>>
NodeJS stream 一:Buffer
查看>>
BZOJ 2754: [SCOI2012]喵星球上的点名 [后缀数组+暴力]
查看>>
【java设计模式】之 建造者(Builder)模式
查看>>
git branch detached from jb4.2.2_1.0.0-ga
查看>>
Mosquitto搭建Android推送服务(二)Mosquitto简介及搭建
查看>>
tomcat做成windows服务之后使用JMX监控的问题
查看>>
elasticsearch配置小记(转)
查看>>
一个屌丝程序猿的人生(四十八)
查看>>
java常见面试题及答案 11-20(JVM)
查看>>
parquet文件格式——本质上是将多个rows作为一个chunk,同一个chunk里每一个单独的column使用列存储格式,这样获取某一row数据时候不需要跨机器获取...
查看>>
NFS安装及优化过程--centos6.6
查看>>
使用tmpfs的好处
查看>>