sudo go 找不到命令

2021-08-22 02:52:05 字數 1525 閱讀 3142

錯誤描述

環境 centos7.1 x64

golang 1.9.3

golang目錄:/home/moonlightwatch/go/

環境變數配置:

export goroot=/home/moonlightwatch/go

export gopath=/home/moonlightwatch/codes/golang/godefault:/home/moonlightwatch/codes/golang/workspace

export path=$path:$goroot/bin:$gopath/bin

現象 使用非root使用者,執行 go version 獲得正確輸出。

使用root使用者,執行 go verison 獲得正確輸出。

使用非root使用者,執行 sudo go version 獲得輸出 sudo: go: command not found

日了狗了有木有?

解決 原因

根據 some programs not found when used with sudo 中的回答。

我們使用 sudo 時,使用的配置檔案是 /etc/sudoers。

解決 配置 /etc/sudoers 檔案中的 defaults secure_path 這一項。將 $goroot/bin 目錄加入進去。(請使用絕對目錄,如:/home/moonlightwatch/go/bin/)

defaults secure_path 這一行,在檔案中是這樣子的:

defaults secure_path = /home/moonlightwatch/go/bin:/sbin:/bin:/usr/sbin:/usr/bin

其他問題

當我們使用了自己 gopath 中的包時,sudo go run ***x 並不會在我們環境變數指定的目錄去查詢包。

我們需要設定 /etc/sudoers 檔案中的 defaults env_keep 項。向其中加入我們的 gopath 環境變數。

defaults env_keep 這幾行,在檔案中是這樣的:

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_***** lc_telephone」

defaults env_keep += 「lc_time lc_all language linguas _xkb_charset xauthority」

defaults env_keep += 「gopath」

加上最後的那一行就行。

ifconfig找不到命令

出現這樣的問題的原因是 你在從普通使用者切換到root使用者的時候 用的是su 或者su root切換的 這樣不行 不會讀取root使用者的私有設定檔案!因此環境變數path不會包含 sbin usr sbin這樣的目錄 因此你直接輸入這些目錄下的命令時 就會提示找不到該命令!解決問題的2個簡單方法...

sudo source 找不到命令

source etc bash.bashrc 唯一的事情是 新環境變數僅供我當前使用者使用 並且在使用sudo時被忽略。當我關閉終端會話並重新加入時,它們才可用於sudo。當我嘗試使用時 sudo source etc bash.bashrc 我收到錯誤 sudo source command no...

提示找不到arm linux gcc 命令

時間 2013 04 19 13 58 來源 internet 點選 616 次 老是提示arm linux gcc找不到,但是確實是裝好了,其實是許可權的問題,原帖如下 ub 老是提示arm linux gcc找不到,但是確實是裝好了,其實是許可權的問題,原帖如下 ubuntu沒有root許可權,...