sudo命令無法讀取環境變數的解決方法

2021-10-02 13:27:12 字數 751 閱讀 2862

通過sudo -l來檢視sudo的限制:

$ sudo -l

matching defaults entries for *** on this host:

env_reset, mail_badpass,

secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

user *** may run the following commands on this host:

(all : all) nopasswd: all

注意看第5行的選項defaults env_reset表示缺省會將環境變數重置,這樣你定義的變數在sudo環境就會失效,獲取不到。

另外有的發行版還有乙個defaults env_keep=""的選項,用於保留部分環境變數不被重置,需要保留的變數就寫入雙引號中。

解決方法:

方法1在使用者的主目錄裡的.bashrc中新增:

alias sudo='sudo env path=$path'

方法2執行sudo visudo,修改配置

# defaults env_reset     # 注釋掉原有配置

# defaults env_keep=」…」    # 注釋掉指定的變數保持

defaults !env_reset      # 修改為不重置環境

sudo命令保持環境變數

如果你裝了多個版本的python,比如 anaconda下的python3.5,原生自帶python2.7,那麼你在anaconda環境下執行sudo python和python所使用的python版本是不同的。sudo在切換成root使用者的時候,env並不會去保留這些環境變數,需要特別的指明才可...

讀取 環境變數

實現 environmentaware setenvironment 方法 即可 注意 不管配置在 啟動伺服器是,就會執行該方法。可以單獨配置,也可以配置在 其他類中。方法一。方法二。可以配置在 contoller中。com.zll.demo.controller.usercontroller re...

linux環境變數設定 讀取

linux下環境變數的讀取分為login shell和non login shell,第一次登入的時候由tty1 tty6的登入,以及通過窗體登入時需要輸入帳號密碼的登入,都叫做login shell 我們經常在圖形介面上啟動新的終端機,這個時候登入的使用者實質上non login shell lo...