![PATH 问题:bash:/usr/local/bin/adb:没有此文件或目录](https://linux22.com/image/1133735/PATH%20%E9%97%AE%E9%A2%98%EF%BC%9Abash%EF%BC%9A%2Fusr%2Flocal%2Fbin%2Fadb%EF%BC%9A%E6%B2%A1%E6%9C%89%E6%AD%A4%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95.png)
我已经安装了 adb 和 fastboot(用于 Android 调试和开发)。以前,当我输入时,adb
它会启动 adb 的命令行帮助。现在它显示:
bash: /usr/local/bin/adb: No such file or directory
好像它只在 中寻找它/usr/local/bin/adb
,对吗?不过我仍然有它/usr/bin/adb
,仍然可以通过输入绝对路径来使用它。
此外,我的 Bash Aliases 文件中有几个别名;其中一个是sysupgrade
(它的作用与听起来一样),但当我今天尝试时,它失败了。所以我运行了下几行在终端在论坛上对一些帮助的解释是错误的,论坛上说把它放进去/etc/profile
:
PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
export PATH
但是我的别名现在可以用了!只是 adb 和 fastboot 不行。我试过了which
,nping
都试过/usr/bin
了,都有效。
更新
输出echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
更新 2
hash -r
没有显示任何内容。但hash
显示:
hits command
1 /usr/local/bin/adb
答案1
adb
在 处进行了哈希处理/usr/local/bin/adb
,这意味着 shell 会记住它的位置,并且不会再次查看 PATH 以查看它是否已被删除/移动。通常hash -r
会取消哈希处理所有内容,包括adb
,但在这种情况下没有这样做 - 不确定为什么,但运行hash -d adb
也会这样做。重新启动 shell 也会取消哈希处理所有内容。
type adb
如果你在修复问题之前运行过,你会看到以下内容:
adb is hashed (/usr/local/bin/adb)
type
这就是为什么比 更好的原因之一which
。
答案2
我仍然无法确定问题的根本原因,但经过反复试验后我解决了它。
我做到which adb
了which fastboot
/usr/local/bin/adb
结果表明:/usr/local/bin/fastboot
我就这么做
sudo rm /usr/local/bin/adb
了sudo rm /usr/local/bin/fastboot
退出终端/重新启动,就可以了。
现在正确执行adb
并fastboot
/usr/bin/adb
/usr/bin/fastboot