在Linux中,Android Debug Bridge (adb)命令行工具存在于$PATH中,但却显示“命令未找到”。

6
sudo echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/lubuntu/Tools/android-sdk-linux/platform-tools

adb位于/home/lubuntu/Tools/android-sdk-linux/platform-tools中。

然后我执行了adb start-server命令:

* daemon not running. starting it now on port 5037 *
* daemon started successfully *

然后输入“sudo adb install test.apk”进行安装。
sudo: adb: command not found

我已将adb添加到环境变量$PATH中,但sudo找不到它。为什么?
5个回答

6

sudo的意思是切换到root用户,但这并不意味着您的环境也会跟随切换。这可能很危险。

如果您愿意冒风险,请添加-E选项以继承调用环境。


谢谢,我已经尝试了-E选项,但是还是失败了,sudo -E adb install temp.apk ==> sudo: adb: command not found-E选项对于sudo不起作用吗? - Searene
-E(保留环境)选项将覆盖sudoers(5)中的env_reset选项。仅当匹配命令具有SETENV标记或在sudoers(5)中设置setenv选项时才可用。 - lamplightdev

5
问题是该用户的PATH变量已设置,而root没有附加的PATH条目,因此无法找到该程序。
您也应该为root设置adb:
adb环境变量
打开~/.bashrc并在最底部添加以下内容。
export PATH=${PATH}:<sdk>/tools:<sdk>/platform-tools

<sdk>更改为实际路径,例如/home/user/android-sdk-linux。关闭并重新打开终端以刷新变量。
来自adb设置
如果不起作用,请将adb和其他二进制文件的符号链接创建到/usr/local/bin目录下。

2

完全同意。

问题出在Android Debug Bridge (adb)命令行工具没有链接到路径上。将其设置到路径中后,它对我起作用了。

$ gedit ~/.bashrc

在.bashrc文件中设置路径,如下所示:

export PATH=${PATH}:~/adt-bundle/tools
export PATH=${PATH}:~/adt-bundle/platform-tools

2

在第二个示例中,由于您正在以root身份运行adb,因此adb也必须在root的路径上。


2

我完全同意@unwind的答案。
你不应该使用"sudo"来执行此操作。
尝试不使用sudo,我猜应该可以解决问题。

同时,你应该将sdk中名为“tools”的文件夹路径添加进去,尽管它与你的问题无关,这是一个建议。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接