赞
踩
Linux Red Hat
执行sudo
卸载nginx
时,出现command not found
错误
[root@iZuf65h6i43ltlzhqolumyZ local]# sudo apt-get remove nginx
sudo: apt-get: command not found
【1】通过/etc/sudoers.d
命令查看文件是否存在;
[root@iZuf65h6i43ltlzhqolumyZ local]# find /etc/sudoers.d
/etc/sudoers.d
如果返回No such file or directory
,就说明你的系统没有安装sudo
,下面是安装命令 :
[root@iZuf65h6i43ltlzhqolumyZ local]# yum install sudo
如果提示E: Unable to locate package sudo
的错误,先执行下面的命令:
[root@iZuf65h6i43ltlzhqolumyZ local]# apt-get update
再执行sudo apt-get install
即可。
【2】如果/etc/sudoers.d
文件存在则说明已经安装了sudo
,但没有配置环境。
当你使用sudo
去执行一个程序时,处于安全的考虑,这个程序将在一个新的、最小化的环境中执行,也就是说,诸如PATH
这样的环境变量,在sudo
命令下已经被重置成默认状态了。所以当一个刚初始化的PATH
变量中不包含你所要运行的程序所在的目录,用sudo
去执行,你就会得到command not found
的错误提示。
要想改变PATH
在sudo
会话中的初始值,使用以下命令打开/etc/sudoers
文件,
[root@iZuf65h6i43ltlzhqolumyZ local]# vim /etc/sudoers
找到secure_path
一行,当你执行sudo
命令时,secure_path
中包含的路径将被当做默认PATH
变量使用。添加所需要的路径(如/usr/local
)到secure_path
下:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
如果提示文件只读,可以修改文件的状态后再修改:
[root@iZuf65h6i43ltlzhqolumyZ etc]# chmod u+w sudoers
应该是环境变量导致的。使用env |grep PATH
和sudo 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
如果不一致,修改/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"
修改.bashrc
文件
[root@iZuf65h6i43ltlzhqolumyZ local]# vim /root/.bashrc
在该文件加入以下配置: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'
重新加载配置文件
source ~/.bashrc
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。