如果我运行,sudo which abc
我希望它在超级用户 $PATH 中搜索程序“abc”,但看起来它只搜索一个子集。
我可以通过运行sudo echo $PATH
和比较搜索到的路径来看到这一点。
$ sudo which abc
which: no abc in (/sbin:/bin:/usr/sbin:/usr/bin)
$ sudo echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ec2-user/.local/bin:/home/ec2-user/bin
这里发生了什么?
答案1
$PATH
sudo
在运行之前展开。因此,您看到的是您的价值PATH
,而不是您 sudo 的用户的价值。
试试这个:
$ sudo bash -c 'echo $PATH'