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
您当前登录的用户的变量。如果脚本位于多个目录上,则使用第一个找到的目录,在这种情况下,$PATH
root 应该类似于
PATH="/usr/bin:/bin:...
对于用户来说应该是这样的
PATH="/bin...