爲何linux中sudo執行會「找不到命令」

sudo:command not found

在本地裝了個Ubuntu虛擬機,golang環境搭好了並加入PATH環境變量,make編譯源碼時顯示Permission denied,而後sudo執行編譯源碼時顯示sudo: go: command not foundlinux

而後嘗試執行go version命令golang

  • 非root用戶執行 :go version go1.12.6 linux/amd64
  • root用戶執行 :go version go1.12.6 linux/amd64
  • 非root用戶sudo執行 : sudo: go: command not found

這???是否是很奇怪???究竟是由於什麼呢??
原來root用戶和非root用戶正常執行命令時,使用的PATH配置文件是 /etc/environment
非root用戶sudo執行命令時,使用的PATH配置文件是 /etc/sudoerscode

/etc/sudoers文件默認是reanonly只讀的,須要加入些權限;而後在secure_path中加入GOROOT路徑便可:
修改前源碼

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

修改後虛擬機

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/go/bin"
相關文章
相關標籤/搜索