【问题标题】:Command without sudo works but requires sudo没有 sudo 的命令有效,但需要 sudo
【发布时间】:2017-07-03 00:13:50
【问题描述】:

我已经解决了这个问题,但我不知道为什么这会解决问题,我不喜欢不知道出了什么问题。我在 Ubuntu 上使用终端

问题来了……

  1. 如果我运行 $ ngm -args,它会运行但会失败,因为它需要 sudo

  2. 如果我运行 $ sudo ngm -args,我会收到类似 ngm not found 之类的错误

  3. 如果我运行 $ sudo /usr/local/lib/ngm -args,它会使用 sudo 运行并且运行良好。

我不明白为什么 3 有效而 2 无效。

【问题讨论】:

    标签: linux ubuntu terminal sudo


    【解决方案1】:

    当尝试运行$ ngm -args 时,shell 将在它的$PATH 变量中查找可执行文件,并找到它。尝试运行可执行文件时,它发现它必须是 sudo 并退出。
    当你运行$ sudo ngm -args时,shell会在root用户的$PATH环境下寻找可执行文件,但找不到。
    像最后一个选项一样运行它时,shell 不需要查看 root 用户的 $PATH,因为它会在您指定的路径中找到它 /usr/local/lib/ngm,所以这两个问题都没有了。

    This might be a starting point in order to understand the PATH

    【讨论】: