【问题标题】:I added PATHs to ~/.bashrc and /root/.bashrc, but "sudo adb" still reports "command not found"? [closed]我在 ~/.bashrc 和 /root/.bashrc 中添加了 PATH,但是“sudo adb”仍然报告“找不到命令”? [关闭]
【发布时间】:2012-01-22 21:03:05
【问题描述】:

我将PATHs 添加到~/.bashrc/root/.bashrc,但sudo adb 仍然报告“找不到命令”?

我也重启了。

所以我需要一种方法让sudo.bashrc 与我用户的.bashrc 同步?

路径是正确的,因为我可以从我的用户运行,而不是 sudo:

PATH=~/android-sdks/tools:$PATH
PATH=~/android-sdks/platform-tools:$PATH

【问题讨论】:

  • 检查 adb 的 +x 权限。做which adb 看看它是否/在哪里找到它
  • 我建议在您的PATH 变量中尝试完整路径;我只是不相信 ~ 扩展能够 100% 工作。

标签: bash ubuntu ubuntu-10.04


【解决方案1】:

哦,我明白了:

sudo -E adb

人须藤:

   -E          The -E (preserve environment) option will override the env_reset option in
               sudoers(5)).  It is only available when either the matching command has the SETENV
               tag or the setenv option is set in sudoers(5).

【讨论】:

  • 由于 sudoers 文件中设置了secure_path,很可能无法正常工作。它应该适用于其他环境变量,而不是 PATH。
【解决方案2】:

在修改 PATH 之后,首先确保您的 bashrc 中有 export PATH 吗?

PATH=$PATH:/path/to/userfoo/dir/android-sdks/platform-tools:/path/to/userfoo/android-sdks/tools
export PATH

使用上述设置尝试 sudo,看看你能走多远。如果没有骰子,那么:

很可能是您在 shudders 文件中设置了secure_path,这可能会限制您的风格;更多详情:

man 5 sudoers

确保在您的用户的 /etc/sudoers 中设置了 SETENV 选项:例如:

userfoo ALL=(ALL) SETENV: ALL

试一试……

【讨论】:

  • 谢谢你都试过了,把 userfoo ALL=(ALL) SETENV: ALL 放在顶部还是底部重要吗?编辑 nvmd 试过 top 和 bottom 都不行。
【解决方案3】:

好吧,我刚刚修改了脚本,将每次出现的 sudo adb 替换为 sudo ~/android-sdks/platform-tools/adb 就足够了

【讨论】:

    猜你喜欢
    • 2011-01-19
    • 2016-06-27
    • 2021-09-16
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-08-31
    • 2022-01-10
    相关资源
    最近更新 更多