sudo -i 返回错误

th3*_*0id 15 linux command-line sudo centos

当我尝试使用切换到 root 时sudo -i出现错误/var/tmp/sclDvf3Vx: line 8: -i: command not found......但是,su -我将继续使用的作品。我绝不是Linux系统管理员,所以环境对我来说仍然很模糊。我想我的问题是:

  1. 为什么会抛出错误?
  2. 这两个命令有什么区别?
  3. 你为什么要使用一个?

更新:

我正在使用 CentOS 版本:CentOS 版本 6.6(最终版)

这是我被要求运行的一些命令的输出,在下面的评论中。

  • type sudosudo is /opt/centos/devtoolset-1.1/root/usr/bin/sudo
  • sudo -V/var/tmp/sclIU7gkA: line 8: -V: command not found
  • grep'^root:' /etc/passwdroot:x:0:0:root:/root:/bin/bash

更新:

这是因为我需要 C++11 支持,所以不久前它被添加到我的非 root 用户的 ~/.bashrc 中。当我注释掉它时,重新 ssh 进入,我可以运行 sudo -i 就好了,没有任何错误。

if [ "$(gcc -dumpversion)" != "4.7.2" ]; then 
  scl enable devtoolset-1.1 bash
fi
Run Code Online (Sandbox Code Playgroud)

roa*_*ima 8

从评论和您的进一步调查来看,您的 devtoolset 似乎正在修改PATH. 不幸的是,这包括似乎是旧的或损坏的 sudo 命令。

尝试.bashrc像这样修改 devtoolset 包含的内容,然后重新登录是值得的:

if [ "$(gcc -dumpversion)" != "4.7.2" ]; then 
  scl enable devtoolset-1.1 bash
  PATH=/usr/bin:$PATH    # We need a working sudo
fi
Run Code Online (Sandbox Code Playgroud)