使用 sudo 執(zhí)行時(shí), 環(huán)境變量默認(rèn)會(huì)重置, PATH 不再是執(zhí)行 sudo 之前的了. 導(dǎo)致很多命令在一般用戶下找得到, 換sudo執(zhí)行就找不到了
方案一. 直接指定到文件,相對(duì)安全
在 /usr/bin 下面給需要的命令建立軟連接. 因?yàn)?/usr/bin 包含在sudo的secure_path路徑中. 如
sudo ln -s /opt/nodejs/node/bin/node /usr/bin/node
方案二. 指定sudo安全路徑,安全路徑擴(kuò)大到指定的目錄,有點(diǎn)風(fēng)險(xiǎn)
修改 /etc/sudoers
里的 secure_path
變量, 把需要的目錄路徑加入進(jìn)去.
修改/etc/sudoers
文件使用 visudo 命令:
sudo visudo
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/opt/nodejs/node/bin
然后使用 sudo -E 執(zhí)行命令. -E會(huì)保持當(dāng)前的環(huán)境變量,但仍然需要執(zhí)行的命令位于 secure_path 路徑之中. 如"
sudo -E pm2 status
方案三. 可執(zhí)行sudo的范圍更大,比較危險(xiǎn)
sudo env PATH=$PATH <需要使用sudo執(zhí)行的命令>
嫌每次輸入麻煩的,配置sudo命令別名
vim .bash_aliases # 或者 vim .bashrc
alias sudo='sudo env PATH=$PATH'