Linux “Commnad not found“和“no such file or directory“的区别

使用linux时,对于不能执行的命令,有时显示"Commnad not found",有时显示"no such file or directory"。

举例如下:

yc@ubuntu:/usr/bin$ kd  (kd是随便输入的命令)
kd: command not found

yc@ubuntu:/usr/bin$ qmake  (qmake命令)
bash: /usr/bin/qmake: No such file or directory


以上两种情况都无法执行命令,但是错误提示确不一样。

使用type查看

yc@ubuntu:/usr/bin$ type kd
bash: type: kd: not found
 

yc@ubuntu:/usr/bin$ type qmake
qmake is hashed (/usr/bin/qmake)

注意看type qmake的返回信息,其中有hashed关键字样

这是因为bash会记住命令位置,并将其存入hash表中。

不管什么原因(卸载,删除,或者其他)qmake失效,hash 表记录并没有被清除,仍然认为qmake还在(/usr/bin/qmake)。bash认为qmake仍然有效,所以跳过PATH查找,直接调用/usr/bin/qmake,所以返回No such file or directory 

使用hash -d移除错误记录

yc@ubuntu:/usr/bin$ hash -d qmake


然后重新执行qmake

yc@ubuntu:/usr/bin$ qmake
The program 'qmake' is currently not installed. You can install it by typing:
sudo apt-get install qtchooser
 

这次没有在显示No such file or directory。由于qmake可以被安装,所以出现安装方法提示。

附:移除整个hash表

hash -r

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值