当前位置:   article > 正文

sudo: apt-get: command not found

sudo: apt-get: command not found

问题

Linux Red Hat 执行sudo卸载nginx时,出现command not found错误

[root@iZuf65h6i43ltlzhqolumyZ local]# sudo apt-get remove nginx
sudo: apt-get: command not found
  • 1
  • 2

解决

【1】通过/etc/sudoers.d命令查看文件是否存在;

[root@iZuf65h6i43ltlzhqolumyZ local]# find /etc/sudoers.d
/etc/sudoers.d
  • 1
  • 2

如果返回No such file or directory,就说明你的系统没有安装sudo,下面是安装命令 :

[root@iZuf65h6i43ltlzhqolumyZ local]# yum install sudo
  • 1

如果提示E: Unable to locate package sudo的错误,先执行下面的命令:

[root@iZuf65h6i43ltlzhqolumyZ local]# apt-get update
  • 1

再执行sudo apt-get install即可。

【2】如果/etc/sudoers.d文件存在则说明已经安装了sudo,但没有配置环境。

当你使用sudo去执行一个程序时,处于安全的考虑,这个程序将在一个新的、最小化的环境中执行,也就是说,诸如PATH这样的环境变量,在sudo命令下已经被重置成默认状态了。所以当一个刚初始化的PATH变量中不包含你所要运行的程序所在的目录,用sudo去执行,你就会得到command not found的错误提示。

要想改变PATHsudo会话中的初始值,使用以下命令打开/etc/sudoers文件,

[root@iZuf65h6i43ltlzhqolumyZ local]# vim /etc/sudoers
  • 1

找到secure_path一行,当你执行sudo命令时,secure_path中包含的路径将被当做默认PATH变量使用。添加所需要的路径(如/usr/local)到secure_path下:

Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
  • 1

如果提示文件只读,可以修改文件的状态后再修改:

[root@iZuf65h6i43ltlzhqolumyZ etc]# chmod u+w sudoers
  • 1

如果还未解决

应该是环境变量导致的。使用env |grep PATHsudo env |grep PATH查看两者变量是否一致。

[root@iZuf65h6i43ltlzhqolumyZ local]# sudo env | grep PATH
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local
[root@iZuf65h6i43ltlzhqolumyZ local]# env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/lib/nodejs/node-v18.12.1-linux-x64/bin
  • 1
  • 2
  • 3
  • 4

如果不一致,修改/etc/sudoers文件中的env_reset参数:在env_reset前加!

Defaults    !env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

修改.bashrc文件

[root@iZuf65h6i43ltlzhqolumyZ local]# vim /root/.bashrc 
  • 1

在该文件加入以下配置:alias sudo='sudo env PATH=$PATH'

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
alias sudo='sudo env PATH=$PATH'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

重新加载配置文件

source ~/.bashrc
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/509045
推荐阅读
相关标签
  

闽ICP备14008679号