adb version与which adb输出路径不一致问题咨询
WSL下adb路径不一致的问题解析
首先纠正个小问题:你说which adb输出/usr/bin/lib应该是笔误,大概率是/usr/bin/adb——毕竟/usr/bin/lib不是可执行文件路径,正常不会是这个结果。
下面说核心问题:
- 你用
sudo apt-get install adb装的adb实际文件确实在/usr/lib/android-sdk/platform-tools/adb,但Debian/Ubuntu系的包管理工具会在/usr/bin下创建**软链接(符号链接)**指向这个实际文件。这么做是为了让你在任意目录都能直接敲adb调用,不用输入完整路径。 which命令的作用是查找你执行adb时实际调用的文件路径,它会按照PATH环境变量里的目录顺序,返回第一个匹配的可执行文件路径。而/usr/bin几乎肯定在PATH里的优先级比/usr/lib/android-sdk/platform-tools高,所以which返回的是软链接的路径。adb version里的Installed as是程序编译时写死的实际安装路径,和系统调用时使用的软链接没有关系,所以显示的是真实文件的位置。
你可以自己验证:
- 执行
ls -l /usr/bin/adb,会看到类似lrwxrwxrwx 1 root root 41 日期 /usr/bin/adb -> /usr/lib/android-sdk/platform-tools/adb的输出,这就说明该文件是指向实际adb程序的软链接。 - 执行
echo $PATH,查看/usr/bin是不是在/usr/lib/android-sdk/platform-tools前面,就能理解为什么which会先找到软链接。
简单总结:系统给adb建了个"快捷方式",which找的是快捷方式的位置,adb version显示的是原文件的位置,两者并不冲突。
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

