PATH 问题:bash: /usr/local/bin/adb: No such file or directory

Mar*_*ars 5 command-line bash

我已经安装了 adb 和 fastboot(用于 Android 调试和开发)。过去,当我输入adb它时,它会启动 adb 的命令行帮助。现在它说: bash: /usr/local/bin/adb: No such file or directory 好像它只是在 中寻找它/usr/local/bin/adb,对吗?虽然我仍然拥有它/usr/bin/adb并且仍然可以通过输入绝对路径来使用它。

此外,我的 Bash 别名文件中有几个别名;其中之一是sysupgrade(它听起来像)但是当我今天尝试时,它失败了。所以我在终端中运行了下一行在一个论坛上解释了一些错误的帮助,说把它放进去/etc/profile

PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin"
export PATH
Run Code Online (Sandbox Code Playgroud)

但是我的别名现在可以工作了!只是 adb 和 fastboot 没有。我已经试过了whichnping它们都在/usr/bin,它们都有效。

更新

输出 echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Run Code Online (Sandbox Code Playgroud)

更新 2

hash -r没有显示任何东西。但hash显示:

hits    command
   1    /usr/local/bin/adb
Run Code Online (Sandbox Code Playgroud)

wja*_*rea 4

adb被散列在/usr/local/bin/adb,这意味着 shell 记住了它的位置,并且不会再次在 PATH 中查看它是否已被删除/移动。通常hash -r会对包括 在内的所有内容进行取消哈希处理adb,但在本例中却没有 - 不知道为什么,但运行hash -d adb也可以做到这一点。重新启动 shell 也会取消所有内容的哈希值。

type adb如果您在解决问题之前运行过,您会看到以下内容:

adb is hashed (/usr/local/bin/adb)
Run Code Online (Sandbox Code Playgroud)

type这也是优于的原因之一which


Mar*_*ars 1

我仍然无法查明问题的根本原因,但经过一番尝试和错误后我修复了它。

我做which adb了并且which fastboot

其中显示:/usr/local/bin/adb/usr/local/bin/fastboot

我只是这么做 sudo rm /usr/local/bin/adbsudo rm /usr/local/bin/fastboot

退出终端/重新启动,我就可以开始了。

现在adb正确fastboot执行/usr/bin/adb/usr/bin/fastboot

  • `which` 对于调试这个没有用。内置的“type”会告诉您到底发生了什么。 (2认同)