为什么以普通用户身份运行和以 root 用户身份运行时,同一个命令使用不同的命令脚本?

为什么以普通用户身份运行和以 root 用户身份运行时,同一个命令使用不同的命令脚本?

date我看到普通用户的命令的脚本位置,它显示

which date
/bin/date

但是当我从 root 运行相同的命令时,它会显示输出/usr/bin/date。为什么这样 ?

答案1

如果which date为 和另一个用户产生不同的结果root,那么他们的 可能有不同的值PATH。普通用户有/bin早于/usr/bin(或/usr/bin根本没有)和之前root有(或根本没有)。/usr/bin//bin/bin

您可以通过运行以下命令来验证这一点:

echo ${PATH}

作为root非 root 用户。

PATH变量是一个以冒号分隔的目录列表,当未提供绝对路径时,shell 将在其中查找命令。 shell 将按照这些目录的列出顺序从左到右搜索这些目录。如果 shell 在目录中找到命令,则会执行该命令。该which命令执行类似的遍历并报告它找到的第一个匹配项。

答案2

这取决于$PATH您当前登录的用户的变量。如果脚本位于多个目录上,则使用第一个找到的目录,在这种情况下,$PATHroot 应该类似于

PATH="/usr/bin:/bin:... 

对于用户来说应该是这样的

 PATH="/bin...

相关内容