Debain(buster) su 无法正常工作,找不到命令

Jam*_*and 2 linux debian root sudo su

  • 例如:我安装了 ifconfig
  • 首先我用“su”成为root
  • 现在我写“ifconfig”并得到:“找不到命令”。
  • 我写了“sudo ifconfig”,现在它可以工作了。

这似乎发生在很多程序(不是全部)中。

另一个例子:如果我不使用相同的方法,apt-get 似乎无法正确安装应用程序。

如果我已经是 root,我不需要写 sudo。

这是为什么?我能做些什么来解决这个问题?

小智 5

TL、DR:使用su --loginsudo


DebianPATH为普通用户设置了不同的设置。在 中/etc/profile,您可以看到/sbin为 root保留的默认值:

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH
Run Code Online (Sandbox Code Playgroud)

type ifconfig说该实用程序所在的/sbin/ifconfig位置就是普通用户无法轻松访问它的原因。当您su不带参数运行时,会保留调用用户的环境,包括PATH变量。sudo另一方面,提供了一个全新的环境并覆盖调用用户的PATH.


您认为出现su故障的原因是重置PATH并且IFS默认情况下是遗留行为。buster 最近转向util-linuxsu其工作方式不同的实现;/usr/share/doc/util-linux/NEWS.Debian.gz详情请参阅。