sudo: apt-get: command not found

_海阔天空發表於2024-04-28

sudo: apt-get: command not found

https://blog.csdn.net/zhengzhaoyang122/article/details/136132952

問題
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的錯誤提示。

要想改變PATH在sudo會話中的初始值,使用以下命令開啟/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 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
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
————————————————

版權宣告:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結和本宣告。

原文連結:https://blog.csdn.net/zhengzhaoyang122/article/details/136132952

相關文章